「エクセルvba ワードファイル追加 ファイル最後尾」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
何を探していたのか、いくつかの可能性が考えられる検索キーワードです。
いくつかの可能性が考えられますが、私は、Wordファイルの最後尾に、Excelファイル上の何らかのデータを追記するVBAのコードを探している方をイメージしました。
Word文書の最後尾にデータを追記するサンプルマクロ
以下のようなExcelマクロで、開いているWord文書の最後尾に、アクティブセルの文字列を追記することができます。
Dim wd_app As Object ' Word.Application
Dim wd_doc As Object ' Word.Document
On Error GoTo ERR_HNDL
Set wd_app = GetObject(Class:="Word.Application")
For Each wd_doc In wd_app.Documents
wd_doc.Bookmarks("\EndOfDoc").Range.InsertAfter _
Text:=ActiveCell.Text
Next wd_doc
GoTo END_TASK
ERR_HNDL:
MsgBox "Wordファイルが開かれていません。"
END_TASK:
Set wd_doc = Nothing
Set wd_app = Nothing
End Sub
サンプルマクロの解説
GetObject関数で、開いているWordをオブジェクト変数・wd_appにセットして、
Set wd_app = GetObject(Class:="Word.Application")
開いている全Word文書にFor Each~Nextループを回して、
For Each wd_doc In wd_app.Documents
Wordファイルの最後尾に、Excel上のアクティブセルの文字列を追記しています。
wd_doc.Bookmarks("\EndOfDoc").Range.InsertAfter _
Text:=ActiveCell.Text
Word文書の最後尾を取得する方法はいくつかありますが、定義済みブックマーク「\EndOfDoc」を使ってBookmarkオブジェクトを取得する上記の方法が可読性の面からは、良さそうに思えます。
このマクロは、Excelマクロですが、重要なのはWordのオブジェクトモデルです。
Excelマクロにどれだけ慣れていても、Word側のオブジェクトの階層構造がわかっていないと、こういったマクロを作るのは不可能です。
Wordのオブジェクト構造を理解するには、オブジェクトブラウザーでプロパティ・メソッドが何を返すのかを丹念に調べることを繰り返しつつ、場合によってはオブジェクトの階層図を自分で書いたりしながら、コードを書き続けるしか方法はないはずです。
Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Wordファイルの最後尾にデータを追記するExcelマクロ