オブジェクト Workbook

Workbook

■ Workbook オブジェクトとは?

Workbook オブジェクトは、Excel で開かれている 1 つのワークブック(Excel ファイル)を表します。たとえば、Book1.xlsx売上表.xlsm といったファイルは、それぞれ 1 つの Workbook オブジェクトとして VBA で操作できます。

VBA では、複数のワークブックを同時に開いて処理したり、特定のワークブックをアクティブにして処理を実行したりできます。


■ Workbook オブジェクトへのアクセス方法

Workbook オブジェクトには、主に以下の方法でアクセスします。

1. 現在アクティブなブックにアクセス

Dim wb As Workbook
Set wb = ActiveWorkbook

2. このマクロを含むブックにアクセス

Dim wb As Workbook
Set wb = ThisWorkbook

3. 開いているブックを名前で指定してアクセス

Dim wb As Workbook
Set wb = Workbooks("売上表.xlsx")

■ Workbook の主なプロパティ

● Name

ブックの名前を取得します(拡張子付き)。

MsgBox ActiveWorkbook.Name

● FullName

フルパスを含むブックの完全なファイル名。

MsgBox ThisWorkbook.FullName

● Path

保存先フォルダのパス。

MsgBox ThisWorkbook.Path

● Worksheets

ブック内のワークシートコレクション。

Dim ws As Worksheet
Set ws = Workbooks("Book1.xlsx").Worksheets("Sheet1")

● ReadOnly

読み取り専用で開かれているかどうかを示す。

If ActiveWorkbook.ReadOnly Then
MsgBox "このブックは読み取り専用です"
End If

■ Workbook の主なメソッド

● Save / SaveAs

ブックの保存を行います。

ActiveWorkbook.Save
ActiveWorkbook.SaveAs "C:\Users\User\Desktop\新しいファイル.xlsx"

● Close

ブックを閉じます。

ActiveWorkbook.Close SaveChanges:=True

● Activate

ブックをアクティブにします。

Workbooks("売上表.xlsx").Activate

● Protect / Unprotect

ブックに保護をかけたり解除したりします。

ActiveWorkbook.Protect Password:="1234"
ActiveWorkbook.Unprotect Password:="1234"

■ Workbook を開く・作成する

● 新しいブックを作成

Dim newBook As Workbook
Set newBook = Workbooks.Add

● 既存のブックを開く

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

■ Workbook に関するイベント(ThisWorkbook モジュール)

Workbook に関する処理を自動で実行したい場合、イベントを使うことができます。イベントは ThisWorkbook モジュールに記述します。

● Openイベント(ブックが開かれたとき)

Private Sub Workbook_Open()
MsgBox "このブックを開きました"
End Sub

● BeforeCloseイベント(閉じる直前)

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("本当に閉じますか?", vbYesNo) = vbNo Then
Cancel = True
End If
End Sub

● SheetActivateイベント(シートがアクティブになったとき)

vbコピーする編集するPrivate Sub Workbook_SheetActivate(ByVal Sh As Object)
    MsgBox "アクティブにしたシート:" & Sh.Name
End Sub

■ Workbook を使った実用例

● 複数のワークブック間でデータをコピー

Sub CopyBetweenBooks()
Dim sourceBook As Workbook
Dim targetBook As Workbook
Dim sourceSheet As Worksheet
Dim targetSheet As Worksheet

Set sourceBook = Workbooks.Open("C:\データ\元データ.xlsx")
Set targetBook = ThisWorkbook

Set sourceSheet = sourceBook.Sheets("Sheet1")
Set targetSheet = targetBook.Sheets("Sheet1")

sourceSheet.Range("A1:D10").Copy targetSheet.Range("A1")

sourceBook.Close SaveChanges:=False
End Sub

このように、ワークブックを跨いだ操作も VBA で簡単に行うことができます。


■ よくある注意点

  • ActiveWorkbook は「今操作している」ブックなので、対象を明確にしたい場合は ThisWorkbook や明示的な変数を使いましょう。
  • ワークブックを閉じる前に、保存有無の確認を行うようにしましょう。
  • 開くファイルのフルパスが正しくないとエラーになるため、エラーハンドリングも必要です。

■ まとめ

項目内容
対象Excelファイル(ワークブック)
主なアクセス方法ActiveWorkbook, ThisWorkbook, Workbooks("名前")
代表的プロパティName, FullName, Path, Worksheets
代表的メソッドSave, Close, Open, Protect
イベントOpen, BeforeClose, SheetActivate など
よくある活用例データ集計、帳票出力、ファイル自動保存など
タイトルとURLをコピーしました