软件:Excel VBA 未在 SaveAs 对话框中填充默认文件名

软件:Excel VBA 未在 SaveAs 对话框中填充默认文件名

我的主 Excel 工作簿中的一些 VBA 代码出现了问题。我有两段代码。代码 A 运行良好。代码 B 运行不正常。

第一段代码(代码 A)运行良好,它创建一个目录并将 Excel 工作簿保存在其中,目录和文件的名称均从单元格 B4 中提取。

第二段代码(代码 B)进入一个目录并打开一个另存为对话框,并应该用单元格 B4 中的信息填充初始文件名框。但是,除了初始文件名不会自动填充之外,其他一切都正常。以前它还可以;在我更改映射驱动器的所有宏引用之前它还可以正常工作(我将它们从映射字母驱动器更改为 UNC 路径,以便文件可以在网络上使用,即 Z:\In Progress\ 更改为 \10.0.0.4\data\In Progress)。

奇怪的是,在从映射驱动器 -> UNC 路径更改后,我没有遇到任何访问网络的问题。这似乎只是个小故障。

我已经编译了该项目并进行了调试。

如果有人知道如何填充代码 B 的初始文件名,我们将不胜感激。

代码 A

    Option Explicit
Sub SaveAsNewJobtoIP()
'This macro creates a New Folder in the In Progress File, named off the BILLING CLIENT Name.
Dim Path As String
Dim InitialName As String
Dim sFileSaveName As Variant

    Path = "\\10.0.0.4\data\In Progress\"

        If Len(Dir("\\10.0.0.4\data\In Progress\" & ActiveSheet.Range("B4").Value, vbDirectory)) = 0 Then
        MkDir Path & ActiveSheet.Range("B4").Value
        End If

'This macro saves the workbook with a Dialog and an Initial Filename
    InitialName = ActiveSheet.Range("B4").Value & " " & ActiveSheet.Range("H2") & " " & ActiveSheet.Range("I2") & " " & ActiveSheet.Range("J2")
    sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=Path & InitialName, FileFilter:="Excel Files (*.xlsm), *.xlsm")

    If sFileSaveName <> False Then
    ActiveWorkbook.SaveAs sFileSaveName
    End If
End Sub

代码 B

    Option Explicit
Sub SaveAsNewQuoteinJCF()
'This macro saves the workbook with a Dialog and an Initial Filename
Dim Path As String
Dim InitialName As String
Dim sFileSaveName As Variant

    Path = "\\10.0.0.4\data\Job Cost Folder\Jill\"
    InitialName = "Estimate " & ActiveSheet.Range("B4").Value
    sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=Path & InitialName, FileFilter:="Excel Files (*.xlsm), *.xlsm")

    If sFileSaveName <> False Then
    ActiveWorkbook.SaveAs sFileSaveName
    End If
End Sub

答案1

我花了一些时间进行研究,试图弄清楚我的本地网络状况,但在评论的帮助下,我发现解决这个问题所需要做的就是:

将 UNC 路径替换为计算机的实际名称。因此我更改了

"\\10.0.0.4\" ---> "\\Server-pc\"

问题解决了。我以为 10.0.0.4 是服务器计算机的名称,但实际上它只是一条路径。将 UNC 路径更改为实际计算机的名称还解决了另一个问题,即宏收到运行时错误 (1004),因为我的同事的 UNC 路径实际上是 10.0.0.3。

相关内容