Как исправить ошибку 1004 в функции wb.SaveAs - PullRequest
1 голос
/ 10 июня 2019

Это мой первый большой проект VBA для моей работы.Я автоматизирую подачу нескольких отчетов из нескольких источников.На прошлой неделе я закончил работу над реализацией двух отчетов, которые мне нужно использовать, и работала функция wb.SaveAs.Теперь, когда я добавил третий источник, wb.SaveAs больше не работает.

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

'This is only the code for the loading and saving part
Dim wbTime As Workbook
Dim wsTime As Worksheet
Dim wbRP As Workbook
Dim wsRPDic As Worksheet
Dim wbTdB As Workbook
Dim wsTdB As Worksheet
Dim wbMots As Workbook
Dim wsMots As Worksheet


'Setting all the workbooks and worksheets to be used
Set wbTime = Workbooks("Timesheets.xls")
Set wsTime = wbTime.Worksheets("TimeSheets")
Set wbRP = Workbooks.Open("\\BUR-SERV\Data\xxx\xxx\xxx xxx\Calculs-Analyses\Rapport Productivit? Prod 2019.xlsx")
Set wsRPDic = wbRP.Worksheets("Dictionary")
Set wbTdB = Workbooks.Open("\\BUR-SERV\Data\xxx\xxx\xxx xxx\Suivis, Rapport et TdB\Tableau de Bord.xlsx")
Set wsTdB = wbTdB.Worksheets("Tableau de Bord Complet - 2019")
Set wbMots = Workbooks.Open("\\BUR-SERV\Data\xxx\xxx\xxx xxx\Calculs-Analyses\Raw Reports\Rapport de productivit?.xls")
Set wsMots = wbMots.Worksheets("Sheet2")


'Save and close section. This is at the very end of the code and both wb.SaveAs don't work now
wbTime.SaveAs Filename:="\\BUR-SERV\Data\xxx\xxx\xxx xxx\Calculs-Analyses\Raw Reports\Done\Heures_" & Replace(curWeek, "/", "-") & ".xls", FileFormat:="xlExcel8"
wbMots.SaveAs Filename:="\\BUR-SERV\Data\xxx\xxx\xxx xxx\Calculs-Analyses\Raw Reports\Done\Rapport de Productivit?_" & Replace(curWeek, "/", "-") & ".xls", FileFormat:="xlExcel8"
wbRP.Save
wbTdB.Save
wbTime.Close
wbMots.Close
wbRP.Close
wbTdB.Close

Я пытаюсь сохранить в заполненной папке два отчета и переименовать их с неделей отчета,Вместо этого я получаю код ошибки: 1004 - Ошибка, определенная приложением или объектом

Ответы [ 2 ]

2 голосов
/ 10 июня 2019

Неудачный вызов Workbook.SaveAs обычно означает, что существует проблема с путем или именем файла.

Отделите вызов участника SaveAs от набора частей, необходимых для выполнения этого вызова участника.

А именно, перетащите выражение аргумента Filename в новую локальную переменную:

Dim newFilename As String
newFilename = "\\BUR-SERV\Data\xxx\xxx\xxx xxx\Calculs-Analyses\Raw Reports\Done\Rapport de Productivit?_" & Replace(curWeek, "/", "-") & ".xls"
Debug.Print newFilename
Stop

Теперь запустите это, и когда выполнение остановится, вы должны увидеть фактическое строковое значение, которое вы передавали для Filename аргумент (Ctrl + G, чтобы вызвать панель отладки / немедленного запуска).Это похоже на правильный путь и имя файла?Скопируйте его в буфер обмена, вернитесь в Excel, нажмите F12 / SaveAs и попробуйте сохранить файл с таким именем.

Должно появиться подробное сообщение об ошибке, в котором будет точно указано, что с ним не так.

Символ ? очень подозрителен (он недопустим в именах файлов), а заполнители \xxx\xxx\xxx выглядят так, что фактический путь может быть довольно глубоким - убедитесь, что общая длина не превышает 255 символов.

0 голосов
/ 10 июня 2019

Я решил проблему, удалив объявление fileformat в wb.saveAs. Наличие .xls само по себе дает правильный формат файла.

Удаление .xls и сохранение формата файла не сработало.

Я также удалил избыточность с помощью строки curWeek при сохранении файла. Формат строки уже использовал '' - '' вместо '' / '' с момента обновления форматирования. Однако этот бит не показывал никакого вмешательства в функцию saveAs.

Спасибо за вашу помощь

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