📘 Excel逆引き事典

【VBA】特定の名前のシートを開かずに(外部参照で)コピーする方法

日々の業務において、大量のデータを扱う際には効率的な作業が求められます。特に、あるワークブックから特定のシートを別のワークブックにコピーする場合、手動で行うと時間がかかります。この記事では、VBAを使用して指定したシート名を持つシートをコピーし、開かずに外部参照で処理することで業務効率化を図ります。

サンプルコード

VBA
Option Explicit
Sub CopySheetWithoutOpening()
    Dim wbSource As Workbook, wbTarget As Workbook
    Dim wsSource As Worksheet, wsTarget As Worksheet
    Dim sourceName As String, targetName As String
    
    ' 外部ワークブックのパスとシート名を指定
    Set wbSource = Workbooks.Open("C:\path\to\sourceWorkbook.xlsx")
    sourceName = "Sheet1"
    
    ' ターゲットワークブックを開くか新規作成する
    Set wbTarget = ThisWorkbook
    targetName = "CopiedSheet"
    
    ' データコピー処理
    Application.ScreenUpdating = False
    For Each wsSource In wbSource.Sheets(sourceName)
        wsSource.Copy After:=wbTarget.Sheets(wbTarget.Sheets.Count)
        Set wsTarget = wbTarget.Sheets(wbTarget.Sheets.Count)
        wsTarget.Name = targetName
    Next wsSource
    
    ' 外部ワークブックを閉じる
    wbSource.Close SaveChanges:=False
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。