misc.log

日常茶飯事とお仕事と

Wordのブックマークにデータをぶち込んで印刷する

こんなコードでとりあえずは紙が出た。

        With bookMarkInfo
            .ZipCode = "123-4567"
            .Address = "東京都横浜市"
            .Name = "例の会社"
        End With

        Dim wordInstance As Word.Application
        Dim docInstance As Word.Document

        wordInstance = CreateObject("Word.Application")
        docInstance = wordInstance.Documents.Add("C:\SampleTemplate.doc")
        wordInstance.Visible = False

        With docInstance.Bookmarks
            .Item("YUBIN_NO").Range.Text = bookMarkInfo.ZipCode
            .Item("JUSYO").Range.Text = bookMarkInfo.Address
            .Item("NAME").Range.Text = bookMarkInfo.Name
        End With

        docInstance.PrintOut()

        docInstance.Close(False)
        docInstance = Nothing
        wordInstance.Quit()
        wordInstance = Nothing

あ、データを構造体に入れてるのは別の事情があってちょっと。
補足。この方法では、Word自体のオブジェクトが残ってしまい不都合が出る。具体的な回避策については後ほど(COMオブジェクトの解放処理を入れる必要がある)。