Excelブック間でデータを移動またはコピーするためのマクロ

この記事では、VBAを使用してMicrosoft Excelの スプレッドシート間でデータコピーまたは転送する方法について説明します 。 この例では、追加クエリを使用してデータを組み合わせる方法も説明します。 このタスクの組み合わせにより、分析を容易にするために既存のワークシートのデータを組み合わせることができます。

Excelでデータを移動またはコピーするためのマクロ

あるワークブックからデータをコピーして、その内容を別のワークブックに修正する必要がある場合を考えてみましょう。 この例では、ワークブック1(ソースワークブック)は1 2 3 4 5 、ワークブック2は6 7 8 9 0です。

マクロを実行した後に、ブック2が6 7 8 9 0 1 2 3 4 5を持つ必要があります。 両方のワークブックのフォーマットは同じです。

これはあなたのデータを転送して追加することができるマクロです。 (コード内の「 注意 」を必ず読んでください。)

 Sub CopyData()

文字列として薄暗いsBook_t

文字列として薄暗いsBook_s

文字列として薄暗いsSheet_t

文字列として薄暗いsSheet_s

lMaxRows_tを長くする

lMaxRows_sを長くする

文字列として薄暗いsMaxCol_s

文字列として薄暗いsRange_t

文字列として薄暗いsRange_s

sBook_t = "対象データWB - WB.xlsへのデータのコピー"

sBook_s = "ソースデータWB - WB.xlsへのデータのコピー"

sSheet_t = "目標WB"

sSheet_s = "ソース"

lMaxRows_t =ワークブック(sBook_t)。シート(sSheet_t).Cells(Rows.Count、 "A")。終了(xlUp).Row

lMaxRows_s =ワークブック(sBook_s)。シート(sSheet_s).Cells(Rows.Count、 "A")。終了(xlUp).Row

sMaxCol_s =ワークブック(sBook_s)。シート(sSheet_s).Cells(1、Columns.Count).End(xlToLeft).Address

sMaxCol_s = Mid(sMaxCol_s、2、InStr(2、sMaxCol_s、 "$") - 2)

(lMaxRows_t = 1)の場合

sRange_t = "A1:"&sMaxCol_s&lMaxRows_s

sRange_s = "A1:"&sMaxCol_s&lMaxRows_s

ワークブック(sBook_t)。シート(sSheet_t).Range(sRange_t)=ワークブック(sBook_s)。シート(sSheet_s).Range(sRange_s).Value

そうでなければ

sRange_t = "A"&(lMaxRows_t + 1)& ":"&sMaxCol_s&(lMaxRows_t + lMaxRows_s - 1)

sRange_s = "A2:"&sMaxCol_s&lMaxRows_s

ワークブック(sBook_t)。シート(sSheet_t).Range(sRange_t)=ワークブック(sBook_s)。シート(sSheet_s).Range(sRange_s).Value

' ###################### 注意 #################

'次の行はコピーされるのではなく、シリアル番号も使用されます。

'必要がない場合は、以下の行を削除してください

ワークブック(sBook_t)。シート(sSheet_t).Range( "A"&lMaxRows_t).AutoFill保存先:=ワークブック(sBook_t)。シート(sSheet_t).Range( "A"&lMaxRows_t + lax&lMaxRows_t + lMaxRows_t) - 1))、タイプ:= xlFillSeries

終了の場合

終了サブ

前の記事 次の記事

トップのヒント