Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Wordファイルの最後尾にデータを追記するExcelマクロ

Wordファイルの最後尾にデータを追記するExcelマクロ

対象:Excel2007, Excel2010, Excel2013

「エクセルvba ワードファイル追加 ファイル最後尾」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

何を探していたのか、いくつかの可能性が考えられる検索キーワードです。

いくつかの可能性が考えられますが、私は、Wordファイルの最後尾に、Excelファイル上の何らかのデータを追記するVBAのコードを探している方をイメージしました。

[スポンサードリンク]

Word文書の最後尾にデータを追記するサンプルマクロ

以下のようなExcelマクロで、開いているWord文書の最後尾に、アクティブセルの文字列を追記することができます。

Sub 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マクロ

「Office連携」の記事一覧

検索


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

.