#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. Что-то должно показаться вам
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