VBA 別のExcelファイル(ブック)を参照

未分類

VBAで別のExcelファイル(ブック)を参照する方法には、大きく分けて以下の2通りがあります:


✅ 1. 別ブックを開いて参照する方法(Workbooks.Open)

📌 基本構文

Dim wb As Workbook
Set wb = Workbooks.Open("C:\パス\ファイル名.xlsx")

🧾 使用例:別ブックのセルを参照して読み取る

Sub 別ブックを開いて参照()

Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\yourname\Documents\data.xlsx")

' A1セルの値を取得して表示
MsgBox wb.Sheets("Sheet1").Range("A1").Value

' 処理が終わったら閉じる(保存しない)
wb.Close SaveChanges:=False

End Sub

✅ 2. すでに開いているブックを参照する方法(Workbooks("名前"))

Sub 開いているブックを参照()

Dim wb As Workbook
Set wb = Workbooks("data.xlsx") ' 拡張子まで必要

MsgBox wb.Sheets("Sheet1").Range("A1").Value

End Sub

✅ 3. 値をコピーして自ブックに貼り付ける例

Sub 他のブックから値をコピー()

Dim srcWb As Workbook
Dim tgtWb As Workbook

Set tgtWb = ThisWorkbook
Set srcWb = Workbooks.Open("C:\Users\yourname\Documents\data.xlsx")

' Sheet1 の A1:B10 を Sheet2 の A1 に貼り付け
srcWb.Sheets("Sheet1").Range("A1:B10").Copy
tgtWb.Sheets("Sheet2").Range("A1").PasteSpecial xlPasteValues

srcWb.Close SaveChanges:=False

End Sub

✅ 4. ブックを開かずに値を取得(リンクではなく直接値取得)

これはVBA単体ではできませんが、ADO(ActiveX Data Objects)を使えば可能です。必要ならそのコードも提供します。


✅ よくある注意点

問題対策
ブックが存在しないDir関数で事前に存在チェック
シート名が違う/ないIf SheetExists(wb, "Sheet1") Then などで確認
値をコピーしたら数式が壊れる.PasteSpecial xlPasteValues を使う
保存せずに閉じたいwb.Close SaveChanges:=False

✅ ファイル存在チェックの例

If Dir("C:\Users\yourname\Documents\data.xlsx") = "" Then
MsgBox "ファイルが存在しません"
Exit Sub
End If
タイトルとURLをコピーしました