Програмне забезпечення: Excel VBA не заселяє ім'я файлу за замовчуванням у діалоговому вікні SaveAs


-1

У мене є проблема з кодом 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

1
"Z: \ У стадії \ до \ 10.0.0.4 \ дані \ Незавершено)." - Каталоги не можуть мати в них періоди. Моя перша здогадка - це те, що ваш каталог у цьому випадку недійсний. Ви можете використовувати ім'я частки (тобто \\ MyDrobo \), де MyDrobo вирішить 10.0.0.4. За винятком пункту if, я не бачу різниці між двома кодовими блоками.
Рамхаунд

"У каталогах не може бути періодів." Це повинно бути більше, ніж ця абсолютна заборона. Це змусило мене цікавитись, тому я перейшов до підказки CMD, сказав Win7 MD MD.Is.My.Directory Повідомлень про помилки не виникало, але DIR показує новий каталог, як і WinExplorer, коли я запускаю. Деякі функції Win UI нав’язливо (нерозумно) дотримуються опції FileExplorer приховування розширень файлів. Я підозрюю, що рано чи пізно виникнуть проблеми, якщо у вас є імена каталогів, які включають періоди, якщо ця опція включена. Інші думки?
Стів Ріндсберг

Схоже, GetSaveAsFilenameє проблеми з періодами як назва папки, як запропонував @Ramhound. Спробуйте змінити свій шлях до, C:\folder.with.periods\Estimateі ви побачите, що поле імені файлу також порожнє.
davidmneedham

@SteveRindsberg Зробити все у File Explorer, командному рядку, ніколи не було обмеженого шляху 255 символів (
наскільки

@Ramhound У вас виникли труднощі з розбором останнього.
Стів Ріндсберг

Відповіді:


0

Знадобилося трохи дослідити і спробувати розібратися в ландшафті моєї локальної мережі, але я зрозумів за допомогою коментарів, що все, що мені потрібно було зробити, щоб вирішити проблему:

Замініть UNC Шлях на фактичну назву комп'ютера. Так я змінився

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

і проблема була вирішена. Я думав, що 10.0.0.4 було ім'ям серверного комп'ютера, але насправді це був лише шлях. Перехід від Шляху UNC до власного імені комп'ютера також вирішив ще одну проблему, коли макроси отримували помилки під час виконання (1004), оскільки шлях UNC мого колеги був насправді 10.0.0.3.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.