
У меня есть макрос, который копирует рабочие листы, а затем сохраняет их как новые.
Но я хочу скопировать два рабочих листа, а затем объединить их в один, но рабочие листы находятся в двух разных рабочих книгах.
например: workbook1 содержит 2 рабочих листа (worksheet1, worksheet2) workbook2 содержит 3 рабочих листа (worksheet1, worksheet2, worksheet3)
Я хочу скопировать рабочий лист1 из рабочей книги1 и рабочий лист1 из рабочей книги2, а затем объединить их, так как они оба имеют одинаковый формат таблицы.
Я не знаю как. Я знаю только как копировать несколько рабочих листов из одной рабочей книги. Я также знаю как их объединять, моя единственная проблема как мне скопировать оба рабочих листа из разных рабочих книг, которые являются рабочей книгой1 и рабочей книгой2
У меня есть только простой код для копирования данных. Вот, кстати, мой код:
saveFolder = "C:\Document\Macro"
path = "C:\Document\Workbook1"
fname = "Sample Account.xlsx"
Workbooks.Open path & fname
Sheets("Account1").Copy
ActiveWorkbook.SaveAs saveFolder & "\Conso.xlsx", FileFormat:=51
Workbooks(fname).Close
другой файл находится в папкеРабочая тетрадь2это имя файлаДополнительные счета
решение1
Этот код VBA (макрос) поможет вам скопировать рабочий лист по вашему выбору из исходной рабочей книги и объединить его в активную книгу.
Данный код является интерактивным, а не стандартным, что делает его универсальным.
Sub CombineSheets()
Dim sPath As String
Dim sFname As String
Dim wBk As Workbook
Dim wSht As Variant
Application.EnableEvents = False
Application.ScreenUpdating = False
sPath = InputBox("Enter File Path Of Source Workbook(s)")
ChDir sPath
sFname = InputBox("Enter the Filename")
sFname = Dir(sPath & "\" & sFname & ".xl*", vbNormal)
wSht = InputBox("Enter Worksheet Name To Copy")
Do Until sFname = ""
Set wBk = Workbooks.Open(sFname)
Windows(sFname).Activate
Sheets(wSht).Copy Before:=ThisWorkbook.Sheets(1)
wBk.Close False
sFname = Dir()
Loop
ActiveWorkbook.Save
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Как это работает:
- Скопируйте и вставьте этот код как стандартный модуль в основную рабочую книгу (в которой вы хотите объединить листы).
- Запустите макрос.
- Сначала он запрашивает путь к исходным книгам.
Примечание,лучше скопируйте и вставьте путь к файлу.
Затем спросите имя рабочей книги, вы также можете использовать подстановочные знаки или имя рабочей книги, например
Myworkbook
.Наконец, предлагается скопировать имя листа.