【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.
シート名や列番号が正しいか確認してください。