У меня возникла проблема с некоторым кодом VBA в моей основной книге Excel. У меня есть две части кода. Код А Работает нормально. Код Б не работает нормально.
Первый фрагмент кода (Код A), который работает нормально, создает каталог и сохраняет в нем книгу Excel с именем как каталога, так и файла, извлекаемого из ячейки B4.
Второй фрагмент кода (код B) идет в каталог и открывает диалоговое окно сохранения как, и предполагается, что начальное поле имени файла заполняется информацией из ячейки B4. Однако все работает, за исключением того, что исходное имя файла не заполняется автоматически. Раньше; это работало как раз перед тем, как я изменил все ссылки на макросы для подключенных дисков (я изменил их с подключенных буквенных дисков на путь UNC, чтобы файл можно было использовать в сети, т. е. с Z:\In Progress\ на \ 10.0.0.4 \ data \In Progress).
Странно то, что у меня не возникает проблем с доступом к сети после перехода с подключенного диска -> UNC-пути. Похоже, это маленький глюк.
Я скомпилировал проект и отладил его.
Если у кого-то есть идея о том, как заполнить исходное имя файла для кода B, это будет очень цениться.
КОД А
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
КОД Б
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