![見出し画像](https://assets.st-note.com/production/uploads/images/157156971/rectangle_large_type_2_0b564c859aa68c3bd2cb2469ce8edb45.png?width=1200)
Excel VBAユーザーのためのWord VBA入門 「chapter 2. Documentは文書を表す」
chapter 2では、Word文書を表すDocumentオブジェクトと、Documentsコレクションについて解説します。
DocumentオブジェクトはExcel VBAのWorkbookオブジェクトに、DocumentsコレクションはWorkbooksコレクションに、それぞれ似た部分のあるオブジェクトです。
このnoteは『Excel VBAユーザーのためのWord VBA入門』の、chapter 2 です。「はじめに」と「chapter 1. Excel VBAとWord VBAの違い」をお読みいただいていない方は、先にこれらの無料記事をお読みください。
2-1. ActiveDocumentでアクティブ文書を取得する
アクティブなWord文書を表すDocumentオブジェクトを取得するプロパティ「ActiveDocument」から見ていきましょう。
ActiveDocumentは、Excel VBAのActiveWorkbookに似たプロパティです。
ActiveDocumentはActiveWorkbookに似ている
Excel VBAの場合、ActiveWorkbookプロパティ(図2-1a)で、アクティブなブックを表すWorkbookオブジェクトを取得できます。
![](https://assets.st-note.com/img/1727412995-KznZa2NM8mHGA5OFdpqgxs3I.png?width=1200)
同様にWord VBAでは、ActiveDocumentプロパティ(図2-1b)を使うと、アクティブなWord文書を表すDocumentオブジェクトを取得できます。
![](https://assets.st-note.com/img/1727413026-WiMbYKDp1OQousZ87NagFBeI.png?width=1200)
▲ オブジェクトブラウザーの詳細ペイン1行目に「Property ActiveDocument As Document」と表示されていることから、ActiveDocumentプロパティの戻り値がDocument型のオブジェクトであることがわかります。
● ActiveDocumentを使ったサンプル
以下のWordマクロを実行すると、アクティブなWord文書の名前と保存先のパスが、メッセージボックスに表示されます。
Sub アクティブなDocumentのNameとPathを取得する()
MsgBox ActiveDocument.Name
MsgBox ActiveDocument.Path
End Sub
Cドライブのtempフォルダーに保存されたchapter_2.docmがアクティブな場合は、文書名「chapter_2.docm」と、保存先のパス「C:\temp」が順番に表示されます。
未保存のWord文書がアクティブな場合、「文書1」などと表示されたメッセージボックスと、空白のメッセージボックスが順番に表示されます。
ここで使用している「.Name」「.Path」については、「2-2. 単なるデータを返すDocumentの特徴的なプロパティ」で解説します。
この挙動は、次のExcelマクロを実行すると、アクティブなブックの名前と保存先のパスが順番にメッセージボックスに表示されるのと、よく似ています。
Sub アクティブなWorkbookのNameとPathを取得する()
MsgBox ActiveWorkbook.Name
MsgBox ActiveWorkbook.Path
End Sub
ActiveDocumentはグローバルなプロパティ
ActiveDocumentプロパティは、Word VBAの最上位オブジェクトである、ワープロソフトWordを表すApplicationオブジェクト(図2-1c)にも用意されています。
![](https://assets.st-note.com/img/1727413200-TaxHU49QcGiBZNwCOjpoqdyF.png?width=1200)
ですから先ほどのSubプロシージャ内のコード
MsgBox ActiveWorkbook.Name
MsgBox ActiveWorkbook.Path
は、以下のように書いても同じ結果になります。
MsgBox Application.ActiveDocument.Name
MsgBox Application.ActiveDocument.Path
しかし、ActiveDocumentプロパティはグローバルメンバー(図2-1b)でもあるため、
![](https://assets.st-note.com/img/1727413026-WiMbYKDp1OQousZ87NagFBeI.png?width=1200)
「Application.」を省略して、いきなり「ActiveDocument」と書き始めるのが一般的です。
これはExcel VBAのActiveWorkbookを書く場合と同じです。
ActiveWorkbookプロパティは、Excel VBAの最上位オブジェクトであるApplicationにも用意されていますが、グローバルメンバーであるため(図2-1a)、通常はいきなり「ActiveWorkbook」と書き始めます。
![](https://assets.st-note.com/img/1727412995-KznZa2NM8mHGA5OFdpqgxs3I.png?width=1200)
これと同様にWord VBAでは「Application.」を書かずにいきなり「ActiveDocument」と書き始めるのが一般的です。
2-2. 単なるデータを返す
Documentの特徴的なプロパティ
ActiveDocumentプロパティで取得できる、Documentオブジェクトに用意されているプロパティの中で、「単なるデータを返すプロパティ」からいくつか見ていきましょう。
DocumentはWord文書を表すオブジェクトですから、Word文書に関連するデータを取得するためのプロパティが、たくさん用意されています。
Word VBAでもプロパティは2種類に分類できます。
「単なるデータを返すプロパティ」と、「オブジェクトを返すプロパティ」です。プロパティが2種類あることをご存じない方は、拙著『いちばんやさしいExcelVBAの教本』の、「Lesson 52. プロパティは2種類あることを知っておきましょう」などをご参照ください。
NameプロパティでWord文書の名前を取得
Excel VBAでは、WorkbookオブジェクトのNameプロパティを使ってブックの名前を取得できます。
Word VBAの場合も、Documentオブジェクトに用意されているNameプロパティ(図2-2a)でWord文書の名前(ファイル名)を取得できます。
![](https://assets.st-note.com/img/1727413572-p1bsHaT8yYSuEOiPBLCIwtNQ.png?width=1200)
▲ オブジェクトブラウザーの詳細ペイン1行目に「Property Name As String」と表示されていることから、Nameプロパティの戻り値がString型のデータであることがわかります。 2行目の「読み取り専用」表示から、Nameプロパティを使って設定はできないこともわかります。
「2-1. ActiveDocumentでアクティブ文書を取得する」で実行した、以下のコードで使用していた「.Name」が、DocumentオブジェクトのNameプロパティです。
MsgBox ActiveDocument.Name
●「.Name」の省略はおすすめしません
オブジェクトブラウザーのメンバーペインに表示されているアイコンや、詳細ペインの「Word.Documentの既定メンバー」表示(図2-2a)からわかるとおり、NameプロパティはDocumentオブジェクトの既定メンバーです。
![](https://assets.st-note.com/img/1727413572-p1bsHaT8yYSuEOiPBLCIwtNQ.png?width=1200)
ですから「.Name」を省略した以下のコードでも、アクティブなWord文書の名前がメッセージボックスに表示されます。
MsgBox ActiveDocument
ですが、この書き方は可読性が低下するだけですから、おすすめできません。以下のように「.Neme」まで、しっかりと書きましょう。
MsgBox ActiveDocument.Name
Pathプロパティで保存先フォルダーのパスを取得
Excel VBAでは、WorkbookオブジェクトのPathプロパティを使ってブックの保存先フォルダーのパスを取得することができます。
Word VBAの場合も、Documentオブジェクトに用意されているPathプロパティ(図2-2b)で、Word文書の保存先フォルダーのパスを取得できます。
![](https://assets.st-note.com/img/1727415050-OsrGZXfTyM2WzUdnDEQaPCph.png?width=1200)
▲ オブジェクトブラウザーの詳細ペイン1行目に「Property Path As String」と表示されていることから、Pathプロパティの戻り値がString型のデータであることがわかります。 2行目の「読み取り専用」表示から、Pathプロパティを使って設定はできないこともわかります。
「2-1. ActiveDocumentでアクティブ文書を取得する」で実行した以下のコードで使用していた「.Path」が、DocumentオブジェクトのPathプロパティです。
MsgBox ActiveDocument.Path
FullNameプロパティで保存先パス+文書名を取得
NameプロパティとPathプロパティの戻り値を合わせたデータを返してくれるプロパティもあります。FullNameプロパティです。
DocumentオブジェクトのFullNameプロパティ(図2-2c)を使うと、パスを含んだWord文書の名前を取得できます。
![](https://assets.st-note.com/img/1727415507-KNEqOR9hUxaG6feoBpZJbclL.png?width=1200)
▲ オブジェクトブラウザーの詳細ペイン1行目に「Property FullName As String」と表示されていることから、FullNameプロパティの戻り値がString型のデータであることがわかります。 2行目の「読み取り専用」表示から、FullNameプロパティを使って設定はできないこともわかります。
本書で学習するDocumentが持つその他のプロパティ
Documentオブジェクトにはたくさんのプロパティが用意されています。その中で、次のような「オブジェクトを返すプロパティ」を、chapter 8までは学習します。
Bookmarksプロパティ(chapter 8)
Charactersプロパティ(chapter 3)
Paragraphsプロパティ(chapter 6)
Sentencesプロパティ(chapter 3)
Wordsプロパティ(chapter 3)
これらを学習するにつれて、Word文書を表すDocumentオブジェクトの理解が、少しずつ深まっていくはずです。
2-3. Documentをローカルウィンドウで確認しよう
Documentオブジェクトがどのようなデータなのかを、ローカルウィンドウで確認しましょう。
VBEのメニュー[表示]-[ローカルウィドウ]でローカルウィンドウを表示してから、以下のSubプロシージャを、ステップ実行してください。
Sub Documentを確認する()
Dim doc As Document
Set doc = ActiveDocument
End Sub
ここから先は
¥ 340
よろしければ、サポートをお願いします!!