Макрос Сохранить как имя файла не работает при сохранении в сети с использованием IP-адреса - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть рабочая строка для сохранения для моего сценария VBA в Excel, и файл сохраняется в сетевую папку.Раньше у сервера было имя, теперь мы обращаемся к папкам сервера с помощью IP (192.168.20.212), поэтому я изменил адрес в коде, используя IP.

Теперь проблема в том, что заданное мной имя файлане работает.Когда появляется диалоговое окно, имя файла пустое, и пользователю необходимо вручную ввести имя файла.Однако, если я введу имя сервера или использую локальный адрес, имя файла будет работать.У меня нет выбора, кроме как использовать IP-адрес для сохранения файла.

Ниже приведена строка для именования файлов:

    filenme = "PENDING CLAIMS_" + szNextDatereformat

И ниже приведена строка для сохранения файла перед;

Dim sFileSaveName As String
        sFileSaveName = Application.GetSaveAsFilename _
                                     (InitialFileName:="\\SERVERNAME\excel_files\" & filenme & sTargetFile, _
                                      FileFilter:="Excel Files (*.xlsx), *.xlsx")

        If sFileSaveName <> "False" Then
             '-- Savethe file --
             Application.DisplayAlerts = False
             ActiveWorkbook.SaveAs FileName:=sFileSaveName, _
                                   FileFormat:=51
            Application.DisplayAlerts = True
        Else
             '-- Popup message --
             MsgBox "Template not saved!", vbExclamation, "Warning"
        End If

Новый должен быть;

Dim sFileSaveName As String
        sFileSaveName = Application.GetSaveAsFilename _
                                     (InitialFileName:="\\192.168.20.212\excel_files\" & filenme & sTargetFile, _
                                      FileFilter:="Excel Files (*.xlsx), *.xlsx")

        If sFileSaveName <> "False" Then
             '-- Savethe file --
             Application.DisplayAlerts = False
             ActiveWorkbook.SaveAs FileName:=sFileSaveName, _
                                   FileFormat:=51
            Application.DisplayAlerts = True
        Else
             '-- Popup message --
             MsgBox "Template not saved!", vbExclamation, "Warning"
        End If

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Благодаря Микишу с небольшой модификацией его кода, со мной сработало следующее:

Dim txtFileName As String
Dim finalPath As String

finalPath = "\\192.168.20.212\networkfolder\"
finalPath = finalPath & filenme & ".xlsx"

txtFileName = Application.GetSaveAsFilename(finalPath, "Excel (*.xlsx), *.xlsx", , "Template saved on the Network")

        If txtFileName <> "False" Then
         '-- Savethe file --
         Application.DisplayAlerts = False
         ActiveWorkbook.SaveAs FileName:=txtFileName, _
                               FileFormat:=51
        Application.DisplayAlerts = True
    Else
         '-- Popup message --
         MsgBox "Canceled saving the template!", vbExclamation, "Warning"
         'Exit Sub
    End If
0 голосов
/ 10 апреля 2019

что-то вроде этого работает для меня:

Dim txtFileName As String
Dim finalPath As String

finalPath = "\\10.10.10.11\PUBLIC\SOMETHING\"
finalPath = finalPath & "myWorkbookName.xlsx"

txtFileName = Application.GetSaveAsFilename(finalPath, "Excel (*.xlsx), *.xlsx", , "Excel network save")
        If txtFileName = "False" Then
            MsgBox ("We could not save Excel.")
            Exit Sub
        End If

Из моих наблюдений возникают проблемы, когда: - компьютер не имеет доступа к сетевому ресурсу, - предлагаемое имя книги не соответствует "правилам" сохраненияНапример, он слишком длинный или содержит те же странные символы.

Вы должны попытаться:

1) проверить, есть ли у компьютера доступ к этому сетевому диску

2) проверить IPадрес правильный

3) проверьте правильность имени файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...