Копировать разные рабочие листы из разных рабочих книг vba

Копировать разные рабочие листы из разных рабочих книг vba

У меня есть макрос, который копирует рабочие листы, а затем сохраняет их как новые.

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

например: 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.

  • Наконец, предлагается скопировать имя листа.

Связанный контент