「エクセル vba ワード 名前を付けて保存」
といった検索キーワードでアクセスがありました。
Excel VBAを使って、Word文書に名前を付けて保存するには、どのようなコードを書けばいいのかを調べていた方による検索です。
Word文書を新規に作成して名前を付けて保存するサンプルマクロ
Cドライブに書き込み可能なtempフォルダーがあるときに、以下のExcelマクロで新規にWord文書が作成され、Cドライブtempフォルダーにsample.docxとして保存されます。
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文書に名前を付けて保存する