У меня есть одна рабочая книга со многими листами, которые мы назовем «тип A», и равное количество листов «типа B» в той же рабочей книге, которые соответствуют данному листу типа A.
Для простоты, скажем, мои листы уходят: красный, желтый, синий, темно-красный, темно-желтый, затем темно-синий.Я хочу скопировать оба красных листа в новую рабочую книгу, затем оба желтых в другую новую книгу и так далее.Я также хочу, чтобы имя нового файла рабочей книги было именем файла типа A (например, Red).Любая помощь будет принята с благодарностью.
Вот VBA, которая у меня есть.Я могу скопировать первый комбо в новую рабочую книгу (т. Е. Оба красных), но после этого я получаю сообщение об ошибке «424».Я использую цикл «i» и ссылаюсь на листы по их номеру для простоты / обобщения.
Sub export2sheets()
Dim twb As Workbook
Set twb = ThisWorkbook
Dim i As Integer
XPath = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To 2
twb.Activate
Worksheets(Array(i, (i + 2))).Copy
With ActiveWorkbook
Application.ActiveWorkbook.SaveAs Filename:=XPath & "\" & xWs.Name & ".xlsx"
Application.ActiveWorkbook.Close False
End With
Workbooks.Add
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
РЕДАКТИРОВАТЬ 1 : приведенный ниже код работает, но не называет файл и не закрывает его, как предполагалось, якобы потому, что для этого я удалил строки кода.
Sub export2sheets()
Dim twb As Workbook
Set twb = ThisWorkbook
Dim i As Integer
XPath = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To 2
twb.Activate
Worksheets(Array(i, (i + 3))).Copy
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
РЕДАКТИРОВАТЬ 2 : самый последний код ниже.
- Я использовал
n
для обобщения числа файлов / листов типа А. - Я удалил все, что связано с
xPath
. - У меня естьизменил
xWs
на Worksheets(i)
. - Я удалил
Application.ActiveWorkbook
. - Я изменил
Close False
на Close True
, потому что я хочу закрыть файл, когда закончите.
Есть идеи , почему код дает мне код ошибки "52" при нажатии клавиши F8 в строке SaveAs
?В настоящее время он выполняется до SaveAs
, поэтому он не меняет имя файла и не закрывает файл.Кроме того, по некоторым причинам Save
и Close False
работают, но если используется SaveAs
или Close True
, он не работает.
Sub export2sheets()
Dim twb As Workbook
Set twb = ThisWorkbook
Dim i As Integer
Dim n As Integer
n = 3 'set n = the number of type A files
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To n
twb.Worksheets(Array(i, (i + n))).Copy
SaveAs Filename:=Worksheets(i).Name & ".xlsx"
Close True
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub