異なるワークブックから異なるワークシートをコピーする vba

異なるワークブックから異なるワークシートをコピーする vba

ワークシートをコピーして新規として保存するマクロがあります。

しかし、2 つのワークシートをコピーして 1 つに結合したいのですが、ワークシートは 2 つの異なるブックにあります。

たとえば、workbook1 には 2 つのワークシート (worksheet1、worksheet2) が含まれ、workbook2 には 3 つのワークシート (worksheet1、worksheet2、worksheet3) が含まれます。

workbook1 から worksheet1 をコピーし、workbook2 から worksheet1 をコピーします。どちらも同じテーブル形式なので、それらを結合します。

方法がわかりません。同じワークブックから複数のワークシートをコピーする方法しか知りません。また、それらを結合する方法も知っています。唯一の問題は、ワークブック1とワークブック2という異なるワークブックからワークシート1の両方をコピーする方法です。

データをコピーするための簡単なコードしかありません。ちなみに、これが私のコードです:

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

  • 最後に、コピーするシート名を尋ねます。

関連情報