Макрос VBA для разделения рабочего листа на новые рабочие книги

#excel #vba

#excel #vba

Вопрос:

Я очень новичок в vba / macros, я создал макрос, который разбивает несколько листов на новый файл Excel. Однако при запуске макроса я получаю ошибку 1004. Код ошибки, который я получаю

Отладка здесь, в строке кода

Ниже приведен мой код.

 Private Sub CommandButton2_Click()

 Dim workbookPath As String
    workbookPath = Application.ActiveWorkbook.Path
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For Each wSheet In ThisWorkbook.Sheets
        wSheet.Copy
        Application.ActiveWorkbook.SaveAs Filename:=workbookPath amp; "CPath.xlsm" amp; wSheet.Name amp; ".xlsx"
        Application.ActiveWorkbook.Close False
    Next
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
  

Обратите внимание на кнопку макроса, которую я создал на листе 1 с именем «Part1» и хочу создавать новые файлы со следующего листа. Пожалуйста, помогите….
В части 1 я создал кнопку

Комментарии:

1. Что-то должно показаться вам workbookPath amp; "CPath.xlsm" amp; wSheet.Name amp; "POL.xlsx" странным.

2. ну, я удалил «POL.» и просто поставил «.xlsx», но все равно получаю ту же ошибку

3. CPath.xlsm в середине выглядит совершенно неправильно.

4. тогда, что это может быть, он сохранил только лист1, в котором есть макрос! С именем «Рабочий макрос.xlsmPart1POL», а затем макрос отладки остановлен.

5. Вам нужно самостоятельно убедиться, что путь в немедленном окне действителен. CPath не принадлежит середине имени файла.

Ответ №1:

Вы пытаетесь вставить два пути в свою строку кода.

Поскольку вы определили workbookPath переменную, вам не нужно ее использовать "CPath.xlsm" . Вам нужно удалить "CPath.xlsm" и вставить "" перед wSheet.Name . смотрите базовый код ниже. Прокомментируйте отладку.Печать (ы) после того, как вы использовали для проверки.

 Dim workbookPath As String: workbookPath = ThisWorkbook.Path 'ThisWorkbook is the macro enabled workbook.

Debug.Print ThisWorkbook.Path 'open the immediate window to varify to verify the path of the macro enabled workbook. 
    
    For Each wSheet In ThisWorkbook.Sheets
        wSheet.Copy
        
        ActiveWorkbook.SaveAs Filename:=workbookPath amp; "" amp; wSheet.Name amp; ".xlsx"
        
        'When you save a sheet as a workbook it becomes the activeworkbook
        Debug.Print ActiveWorkbook.Path amp; ""; ActiveWorkbook.Name 'use to verify the path of the new workbook.
        
        ActiveWorkbook.Close False
    Next wSheet

End Sub