-1

У меня возникла проблема с некоторым кодом 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

1 ответ1

0

Потребовалось немного исследований и попыток выяснить ландшафт моей локальной сети, но я с помощью комментариев выяснил, что все, что мне нужно было сделать, чтобы решить эту проблему:

Замените путь UNC фактическим именем компьютера. Итак, я изменился

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

и проблема была решена. Я думал, что 10.0.0.4 было именем компьютера сервера, но на самом деле это был просто путь. Переход с пути UNC на имя фактического компьютера также решил другую проблему, когда макросы получали ошибки времени выполнения (1004), потому что путь UNC Path моего коллеги был на самом деле 10.0.0.3.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .