Новая ошибка компиляции Excel VBA при сохранении книг

Я использовал код ниже, чтобы успешно создать и сохранить новую книгу для каждого рабочего листа в моей книге. Когда я пытаюсь запустить его сейчас, я получаю сообщение об ошибке «Ошибка компиляции Неверное количество аргументов или недопустимых присвоений свойств». Я не понимаю, почему он сейчас не работает; это было раньше. Мне нужна дата в конечном имени. Если я запустил код со строкой wb.SaveAs, отмеченной знаком «он отлично работает. Сейчас это не похоже на часть формата. Любые идеи, что отличает и почему? Спасибо.

Sub Make_Workbooks() Dim ws As Worksheet Dim wb As Workbook Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual For Each ws In ThisWorkbook.Worksheets Set wb = Workbooks.Add 'wb.SaveAs ThisWorkbook.Path & "\" & ws.Name wb.SaveAs ThisWorkbook.Path & "\" & ws.Name & Format(Date, "yyyy-mm-dd") & ".xlsx" ws.Copy Before:=wb.Worksheets(1) wb.Close SaveChanges:=True Next ws ResetSettings: 'Reset Macro Optimization Settings Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub 

Синтаксис, используемый для использования SaveAs , должен быть FileName , FileFormat , ….

В вашем коде это должно быть:

 wb.SaveAs ThisWorkbook.Path & "\" & ws.Name & Format(Date, "yyyy-mm-dd"), xlOpenXMLWorkbook 

( xlOpenXMLWorkbook = ".xlsx")

Если вы будете запускать свой код несколько раз в день, вы получите сообщение, если вы хотите перезаписать существующий файл с тех пор, как ThisWorkbook.Path & "\" & ws.Name & Format(Date, "yyyy-mm-dd") будут иметь одну и ту же String в тот же день.

Если вы хотите автоматически перезаписать свой предыдущий файл, добавьте строку Application.DisplayAlerts = False .

Код

 Option Explicit Sub Make_Workbooks() Dim ws As Worksheet Dim wb As Workbook Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual For Each ws In ThisWorkbook.Worksheets Set wb = Workbooks.Add ' add this line to automatically overwrite the exisitng file (not getting the MsgBox on every time) Application.DisplayAlerts = False wb.SaveAs ThisWorkbook.Path & "\" & ws.Name & Format(Date, "yyyy-mm-dd"), xlOpenXMLWorkbook ws.Copy Before:=wb.Worksheets(1) wb.Close SaveChanges:=True Next ws ResetSettings: 'Reset Macro Optimization Settings Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub 

Edit1 : Если вы хотите удостовериться, что имена двух файлов не имеют одинакового имени, вы можете использовать функцию Now :

 wb.SaveAs ThisWorkbook.Path & "\" & ws.Name & Format(Now, "yyyy-mm-dd_hh_mm_ss"), xlOpenXMLWorkbook 

Я не могу реплицировать вашу проблему в своей системе, но следующий код минимизирует явное создание и отслеживание новых объектов Workbook, поэтому он может быть менее подвержен ошибкам в разных средах:

 Sub Make_Workbooks() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Copy 'Copies current sheet to new workbook ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ws.Name & "_" & Format(Date, "yyyy-mm-dd") & ".xlsx" ActiveWindow.Close Next ws 

End Sub

Interesting Posts

Контроль доступа кадра, переданного по ссылке в подпункте

Преобразование американских дат с отметкой времени

Пример создания сводной таблицы в ClosedXML

обновление метаданных для классов объектов с программным использованием дуги

Есть ли инструмент генерации кода, который принимает файлы Excel в качестве входных данных?

Возможно ли получить определенные данные из таблицы excel (из столбца или строки) с использованием apache tika в java?

excel macro для изменения соединений внешних данных

Командная кнопка для запуска открытого явного кода VBA

Вставить скопированные ячейки в Excel с помощью Python Win32Com

Получение данных из Интернета

Формула WORKDAY показывает правильное значение в Excel, но не в XML

Скрипт Powershell для извлечения и переименования .xls из Outlook

VBA excel – добавление поля со списком в список

Импортировать определенные строки из текстового файла в электронную таблицу Excel с помощью VBA

Расчет наклона с несколькими условиями

Давайте будем гением компьютера.