「ACCESS VBA WORD読み込み」
といった検索でアクセスがありました。
Access VBAでWord文書からデータを取得するには、どのようなコードを書けばいいのかを調べていらしたのでしょうか。
開いているアクティブ文書からデータを取得するサンプルプロシージャ
何らかのWordファイルを1つ開いておいてから、以下のSubプロシージャを実行してください。
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文書からデータを取得する