У мене є проблема з кодом VBA в моїй головній робочій книзі Excel. У мене є дві частини коду. Код A Працює чудово. Код B не працює добре.
Перший фрагмент коду (Code A), який добре працює, створює каталог і зберігає в ньому робочу книгу Excel, з іменем як каталогу, так і файла, витягнутого з комірки B4.
Другий фрагмент коду (код B) переходить до каталогу і відкриває діалогове вікно збереження як діалогове вікно, і він повинен заповнити початкове поле імені файлу інформацією з комірки B4. Однак все працює, окрім початкового імені файлу, не заповнюється автоматично. Це раніше; він працював якраз до того, як я змінив усі посилання макроконтролерів на картографічні накопичувачі (я змінив їх із відображених літерних дисків на шлях UNC, щоб файл можна було використовувати в мережі, тобто Z: \ In Progress \ to \ 10.0.0.4 \ дані \ Незавершене).
Дивна річ у тому, що я не маю жодних проблем із доступом до мережі після переходу з відображеного на диску накопичувача -> 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
GetSaveAsFilename
є проблеми з періодами як назва папки, як запропонував @Ramhound. Спробуйте змінити свій шлях до, C:\folder.with.periods\Estimate
і ви побачите, що поле імені файлу також порожнє.
10.0.0.4
. За винятком пункту if, я не бачу різниці між двома кодовими блоками.