Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAで開いているWord文書に書き込みたい

Excel VBAで開いているWord文書に書き込みたい

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel & Word(バージョン2105 ビルド14026.20270 Microsoft Store)

「Excel VBA Word 開いてるファイル 書き込む」
といった検索キーワードで時折アクセスがあります。

[スポンサードリンク]

開いているWord文書の先頭に書き込むサンプル

Word文書が開かれている状態で以下のSubプロシージャを実行すると、アクティブなワークシートのA1セルの値が、Word文書の先頭に書き出されます。

Sub Word文書にデータを書き込む()
On Error GoTo ErrHandl

 With GetObject(Class:="Word.Application")
  .ActiveDocument.Range(0, 0).Text _
    = Range("A1").Value
 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への参照を、VBAのGetObject関数で取得しておいてから、
  With GetObject(Class:="Word.Application")

WordのActiveDocumentの先頭に、
   .ActiveDocument.Range(0, 0).Text _

ExcelのアクティブシートのA1セルの値を書き込んでいます。
    = Range("A1").Value

一応、Excel VBAのコードではありますが、かなりの部分がWord VBAと言ったほうがいいコードです。

Excel VBAユーザーのためのWord VBA入門(1)』の「3-2. Document.RangeメソッドでRangeを取得する」で、解説している「ActiveDocument.Range(0, 0)」で、文書の先頭を表すRangeオブジェクトを取得して、
   .ActiveDocument.Range(0, 0).Text _

「3-4. Rangeの特徴的なプロパティ」で解説しているRange.Textプロパティで、文書先頭の文字列へ書き込むようにしています。
   .ActiveDocument.Range(0, 0).Text _

書き込みたいデータを指定している「Range("A1").Value」は、純粋なExcel VBAのコードです。
    = Range("A1").Value

開いているWord文書の末尾に書き込む場合

先ほどの、
  With GetObject(Class:="Word.Application")
   .ActiveDocument.Range(0, 0).Text _
     = Range("A1").Value
  End With
の部分を、以下のように変更すれば、Word文書の末尾に書き出みが行われます。

 With GetObject(Class:="Word.Application")
  .ActiveDocument.Bookmarks("\EndOfDoc").Range.Text _
    = Range("A1").Value
 End With

違いは、
   .ActiveDocument.Range(0, 0).Text _
だった部分が、
   .ActiveDocument.Bookmarks("\EndOfDoc").Range.Text _
となっている点です。

拙著の「8-1. アクティブページを表すRangeを取得」で解説しているBookmarksコレクションのItemメソッドに、定義済みブックマーク「\EndOfDoc」を指定することで、文書末尾を表すBookmarkオブジェクトを取得して、Bookmark.Rangeプロパティで、文書末尾を表すRangeオブジェクトを取得しています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAで開いているWord文書に書き込みたい

TrackBack:0

TrackBack URL

Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAで開いているWord文書に書き込みたい

「Office連携」の記事一覧

検索


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

.