Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWord文書に名前を付けて保存する

Excel VBAでWord文書に名前を付けて保存する

動作検証バージョン:Windows 11 Home + 64bit Excel & Word バージョン 2412(ビルド18305.20000クイック実行)ベータチャネル

「エクセル vba ワード 名前を付けて保存」
といった検索キーワードでアクセスがありました。

Excel VBAを使って、Word文書に名前を付けて保存するには、どのようなコードを書けばいいのかを調べていた方による検索です。

Word文書を新規に作成して名前を付けて保存するサンプルマクロ

Cドライブに書き込み可能なtempフォルダーがあるときに、以下のExcelマクロで新規にWord文書が作成され、Cドライブtempフォルダーにsample.docxとして保存されます。

Sub Word文書を新規に作成し名前を付けて保存する()
 With CreateObject("Word.Application")
  .Visible = True
  With .Documents.Add
   .Range.Text = "これはExcel VBAで作成したWord文書です。"
   .SaveAs2 "C:\temp\sample.docx"
  End With
 End With
End Sub

サンプルマクロで行っている処理

「エクセル vba ワード 名前を付けて保存」
と検索なさった方が求めていた、名前を付けて保存を行っているのは、以下の部分です。

 With CreateObject("Word.Application")
  With .Documents.Add
   .SaveAs2 "C:\temp\sample.docx"

拙著『Excel VBAユーザーのためのWord VBA入門(1): Document・Range・Selectionの基本編』でも解説している、Documents.Addメソッドで新規Word文書を作成し、Document.SaveAs2メソッドで名前を付けて保存しています。

各ステートメントをもう少し細かく見ましょう。

VBA.CreateObject関数

まず、VBAのCreateObject関数の引数に文字列「Word.Application」を指定してWordのApplicationオブジェクトへの参照を取得しています。

この後は、実質的にWord VBAです。

 With CreateObject("Word.Application")

Word.Application.Visible

Word.Applicationをパソコンの画面上に表示しなくても処理は可能ですが、最初は目視確認するほうが良いでしょうから、Word.Application.VisibleプロパティにTrueを指定して、Wordをパソコン上に表示しています。

  .Visible = True

Word.Documents.Add

拙著で解説しているとおり、WordのDocuments.Addメソッドは新規に作成したDocumentオブジェクトを返すので、

 With CreateObject("Word.Application")
  With .Documents.Add
   .Range.Text = "これはExcel VBAで作成したWord文書です。"
   .SaveAs2 "C:\temp\sample.docx"

といったコードにしています。
Documents.Addメソッドの戻り値をオブジェクト変数に代入するのであれば、以下のように書くこともできます。

 With CreateObject("Word.Application")
  Dim wd_doc As Object
  Set wd_doc = .Documents.Add
  wd_doc.Range.Text = "これはExcel VBAで作成したWord文書です。"
  wd_doc.SaveAs2 "C:\temp\sample.docx"

オブジェクト変数を使ったコードのほうが理解しやすい、という方が多いと思います。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWord文書に名前を付けて保存する

「Office連携」の記事一覧

検索


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

.