【VBA】開いている全ブックを配列を使って高速にコピーする方法
手作業で複数のExcelファイルからデータをコピーするのは時間がかかります。この記事では、VBAを使用して開いている全てのワークブックを高速にコピーし、業務効率化を図る方法を紹介します。
サンプルコード
VBA
Option Explicit
Sub CopyAllOpenBooks()
Dim wb As Workbook, ws As Worksheet
Dim arr() As Variant
Dim i As Integer, j As Integer
Application.ScreenUpdating = False '画面更新停止
ReDim arr(1 To ThisWorkbook.Sheets.Count)
For Each wb In Workbooks
If Not wb Is ThisWorkbook Then
For Each ws In wb.Sheets
arr(i) = ws.UsedRange.Value
i = i + 1
Next ws
End If
Next wb
ReDim Preserve arr(1 To i)
Set ws = ThisWorkbook.Sheets.Add
ws.Range("A1").Resize(UBound(arr), Columns(ws.UsedRange).Count).Value = Application.Transpose(Application.Index(arr, 0, 0))
Application.ScreenUpdating = True '画面更新再開
End Subよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。