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
終了の場合
終了サブ