Home » Access VBA » Access VBAで開いているアクティブなWord文書からデータを取得する

Access VBAで開いているアクティブなWord文書からデータを取得する

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

「ACCESS VBA WORD読み込み」
といった検索でアクセスがありました。

Access VBAでWord文書からデータを取得するには、どのようなコードを書けばいいのかを調べていらしたのでしょうか。

開いているアクティブ文書からデータを取得するサンプルプロシージャ

何らかのWordファイルを1つ開いておいてから、以下のSubプロシージャを実行してください。

Sub アクティブなWord文書から文字列を段落ごとに取得する()
On Error GoTo ErrHandl
 
 With GetObject(Class:="Word.Application")
  With .ActiveDocument   
   Dim wd_par As Object
   For Each wd_par In .Paragraphs
    MsgBox wd_par.Range.Text
   Next  
  End With
 End With

Exit Sub
ErrHandl:
 Select Case Err.Number
  Case 429
   MsgBox "Wordが起動していないようです。"
  Case 4248
   MsgBox "Wordファイルが開かれていないようです。"
  Case Else
   MsgBox Err.Description & vbCrLf & Err.Number
 End Select
 Err.Clear
End Sub

アクティブなWord文書の段落ごとの文字列が、メッセージボックスに順番に表示されます。

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

「ACCESS VBA WORD読み込み」
とのことですが、上記のプロシージャに「Access VBA」と呼ぶべき箇所は皆無です。
ExcelからでもPowerPointからでもVBE(Visual Basic Editor)を起動し、標準モジュールに上記のSubプロシージャを書けば動くはずです。

VBAのGetObject関数を使って、起動済のWord.Applicationへの参照を取得した後は、

With GetObject(Class:="Word.Application")

実質的にWord VBAです。
VBAのGetObject関数を使った処理については、開いているExcelブックを取得するコードもご覧になることをおすすめします。

拙著『Excel VBAユーザーのためのWord VBA入門(1): Document・Range・Selectionの基本編』の[6-2. ParagraphsからParagraphを取得する]で、以下のSubプロシージャを紹介しています。

Sub Paragraphを順番に取得する()
 Dim par As Paragraph
 For Each par in ActiveDocument.Paragraphs
  '(途中省略)
  MsgBox par.Range.Text
 Next
End Sub

上記AccessのSubプロシージャの以下の部分は、

With .ActiveDocument   
 Dim wd_par As Object
 For Each wd_par In .Paragraphs
  MsgBox wd_par.Range.Text
 Next  
End With

拙著で解説しているものと実質的に同じです。
Word VBAのDocument.Paragraphsプロパティで、全段落を表すParagraphsコレクションを取得して、For Each~Nextループを使ってその要素であるParagraphオブジェクトを取得し、Paragraph.Rangeオブジェクトを経由してその文字列を取得しています。

最終更新日時:2024-03-28 23:36

[スポンサードリンク]

Home » Access VBA » Access VBAで開いているアクティブなWord文書からデータを取得する

「Access VBA」の記事一覧

検索


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

.