VBA入門
Workbookオブジェクト

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2022-06-11

第53回.Workbookオブジェクト


Workbookオブジェクトは、ワークブックそのものです。
1つのワークブックは、1つのExcelファイルです。
マクロVBAで複数のブックを扱う場合や、ブックを読込んだり保存したりする場合は、
Workbookオブジェクトをしっかり意識しつつVBAを記述しなければなりません。



WorkBookの指定方法

Workbooks("ブック名")
ブック名で指定されるブックです。

Workbooks(インデックス)
ブックを開いた順番の数値で指定しますが、
これは使う事はほぼないでしょう。

ActiveWorkbook
アクティブなブック、これは常に一つだけです。

ThisWorkbook
動作しているマクロが書いてあるブックです。

これらで参照されるオブジェクトがWorkbookオブジェクトになります。
ここで記述しているWorkbooks等は、Applicationのプロパティになります。

VBA マクロ Workbook

Applicationのプロパティについては、少し後の回に詳しく説明します。


WorkBookのデータ型

データ型は、
Workbook
つまり、

Dim 変数 As Workbook

このように使います。
気を付けてもらいたいのは、
Workbooks
ではないと言う事です。
データ型のWorkbookは複数形ではないので、最後のsは付きません。

Workbooksは、Workbookの集まりで、コレクションと言います。
コレクションについては、後々説明いたします。
Workbooksコレクションの中から、特定のブックを指定したものが、Workbookオブジェクトになります。


WorkBookのプロパティとメソッド

WorkBookオブジェクトに含まれるプロパティ・メソッドは、非常にたくさんあります。
WorkBookのプロパティ、メソッド、イベントの一覧
・WorkBookオブジェクトのプロパティ一覧 ・WorkBookオブジェクトのメソッド一覧 ・WorkBookオブジェクトのイベント一覧
ごく一部、良く使うものを以下に紹介します。

プロパティ Name 名前
Names 名前定義
Path 保存パス
FullName 保存パス+名前
Saved 最後の保存から変更されたかを取得・設定
ReadOnly 読み取り専用かを取得・設定
Sheets 全てのシート
Worksheets 全てのワークシート
メソッド ActiVate アクティブにします
Close 閉じる
Save 上書き保存
SaveAs 名前を付けて保存
SaveCopyAs コピーを保存
PrintOut 印刷
PrintPreview 印刷プレビュー
Protect 保護
Unprotect 保護を解除

今までに出てきたのは、Activateくらいです。
個々の使い方については、今後少しづつ紹介します。


Workbookオブジェクトの使用例

Dim wb As Workbook
Set wb = Workbooks("Book1.xlsx")
MsgBox wb.Name

メッセージボックスには、「Book1.xlsx」と表示されます。
Workbookの集まりWorkbooksコレクションの中から"Book1.xls"を指定することでWorkbookオブジェクトを取得し、
その参照を、オブジェクト変数wbに入れています。
そして、Nameプロパティで名前を取得してメッセージ出力しています。


プロパティとメソッドの違い

多少、余談になりますが、
プロパティとメソッドを、厳密に区分けする意味は特にあまりありません
あくまで文法的な違い、VBAでの書き方の違いでしかありません。

プロパティは属性、メソッドは動作を与える。
そうは言っても、プロパティも値を設定する事で、動作を与えている事と変わりません。

最も端的な例としては、罫線を引く場合の、
.Bordersはプロパティ、.BorderAroundはメソッドですが、どちらも罫線が引かれます。

上記のプロパティ・メソッドの一覧の.Savedはプロパティですが、
.Saved = True
とすれば、保存済み状態にしている訳で、メソッドとの違いを認識しづらいと思います。
ただし、Savedでは実際に保存はされません。
実際に保存するにはSaveメソッドを実行します。

※要はエクセルを作った人が、どちらで作ったかの違いでしかありません。
従って、そのように分類されていて文法的な書き方に違いがある
そのくらいの解釈でとりあえずは十分でしょう。




同じテーマ「マクロVBA入門」の記事

第87回.WorksheetFunction(ワークシート関数を使う)
第51回.Withステートメント
第52回.オブジェクト変数とSetステートメント
第53回.Workbookオブジェクト
第54回.Windowsオブジェクト
第55回.Worksheetオブジェクト
第56回.Rangeオブジェクト(RangeとCells)
第57回.Applicationのプロパティ(マクロ高速化と警告停止等)
第58回.コレクションとは(Collection)
第59回.コレクション処理(For Each)
第60回.エラー処理(On Error)


新着記事NEW ・・・新着記事一覧を見る

第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方 |生成AI活用研究(2025-05-20)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する! |生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
すぐに使える!生成AI プロンプト作成 実践ガイド|生成AI活用研究(2025-05-15)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ