【VBA】簡単かつ高速でシート全体を別ブックの別シートにコピーする

スマートにシート全体をコピーする方法です。

目次

全体を変数に取り込んでコピーする

Dim a,b 
Set a = Workbooks("Book1").Worksheets("Sheet1").UsedRange
Workbooks("Book2").Worksheets("Sheet1").UsedRange.ClearContents '消してるだけ
Set b = Workbooks("Book2").Worksheets("Sheet1").Range("A1") 
a.Copy (b)

これだけです。
簡単かつ、高速で処理できます。

UsedRangeとCurrentRegion

今回利用しているUsedRangeですが、これはシート内で利用しているセル全体を指定することができます。

よく利用される.CurrentRegionとの違いは、シート全体かセルの塊かという違いです。
次の図を見てください。

上記のような場合、Range(“A1”).CurrentRegion.SelectはA1を含むセルの塊、つまりRange(“A1:D6”)が選択されます。
一方でActiveSheet.UsedRange.Selectとすると、シート全体なので、Range(“A1:F8”)が選択されます。

おわり

フォルダ内のブックをすべてコピーするとか、そういったときに使えますよね。

コメント

コメントする

目次