Home » Access VBA » Access VBAで既に開いているWord文書を順番に取得する

Access VBAで既に開いているWord文書を順番に取得する

動作検証バージョン:Windows 11 Home + 64bit Access & Word バージョン 2403(ビルド17425.20000クイック実行)ベータチャネル

「accessvba wordファイル 既に開いている」
という検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。

Access VBAで、既に開いているWord文書を取得するにはどうすればいいのか、調べていらしたのでしょう。
開いているアクティブなWord文書からデータを取得するSubプロシージャを既にご紹介しているので、この記事では開いているWord文書(Word.Documentオブジェクト)を順番に取得するサンプルをご紹介します。

For Each~NextでDocumentを順番に取得するサンプルプロシージャ

以下のSubプロシージャを実行すると、開いているWord.Documentが順番に取得され、その文書名(Word.Document.Name)がメッセージボックスに表示されます。

Sub 開いているWordのDocumentを順番に取得する()
On Error GoTo ErrHandl
 
 Dim wd_app As Object
 Set wd_app = GetObject(Class:="Word.Application")
 
 Dim wd_doc As Object
 For Each wd_doc In wd_app.Documents
  MsgBox wd_doc.Name
 Next
 
 Set wd_doc = Nothing
 Set wd_app = Nothing

Exit Sub
ErrHandl:
 Select Case Err.Number
  Case 429
   MsgBox "Wordが起動していないようです。"
  Case Else
   MsgBox Err.Description & vbCrLf & Err.Number
 End Select
 Err.Clear
End Sub

サンプルプロシージャで行っている処理の内容

VBAのGetObject関数の引数Classに文字列「Word.Application」を指定して、起動済みのWord.Applicationへの参照を取得した後は、

Dim wd_app As Object
Set wd_app = GetObject(Class:="Word.Application")

実質的にWord VBAです。

拙著『Excel VBAユーザーのためのWord VBA入門(1)』の[2.5. DocumentsはDocumentのコレクション]で、開いている全文書を表すWordのDocumentsコレクションをご紹介しています。
Word.DocumentsコレクションからFor Each~Nextループを使って、要素であるWord.Documentオブジェクトを順番に取得して、拙著の[2-1. ActiveDocumentでアクティブ文書を取得する]でも紹介しているWord.Document.Nameプロパティで文書名を取得しメッセージボックスに表示しています。

Dim wd_doc As Object
For Each wd_doc In wd_app.Documents
 MsgBox wd_doc.Name

For~Nextで処理したい場合

VBAのFor Each~Nextループは、基本的にFor~Nextループで書くことも可能です。
また、オブジェクト変数を使った処理は、With文を使って書けるケースも少なくありません。

先ほどの

Dim wd_app As Object
Set wd_app = GetObject(Class:="Word.Application")
 
Dim wd_doc As Object
For Each wd_doc In wd_app.Documents
 MsgBox wd_doc.Name
Next
 
Set wd_doc = Nothing
Set wd_app = Nothing

は、以下のように、Withブロック内でFor~Next文を使っても同様の結果となります。

With GetObject(Class:="Word.Application")
 Dim i As Long
 With .Documents
  For i = 1 To .Count
   MsgBox .Item(i).Name
  Next
 End With
End With

最終更新日時:2024-03-29 11:34

[スポンサードリンク]

Home » Access VBA » Access VBAで既に開いているWord文書を順番に取得する

「Access VBA」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.