Excel VBA Excelで作成した表をWordドキュメントに書き出す

スポンサーリンク

Excelで作成した表をWordに書き出す方法

Excelのデータを元に新規のWordドキュメントを作成するには、Word VBAライブラリファイルへの参照設定を行いWordアプリケーションのインスタンス(複製)を作成しWord VBAのメソッドを使用してWordドキュメントを操作します。

ここで使用する主な「Word VBA」のメソッド一覧

その他のメソッドやプロパティについては「Wordを操作する主なプロパティとメソッド」をご覧ください。

メソッド内容
TypeText
【タイプテキスト】
指定された文字列を挿入します。
TypeParagraph
【タイプパラグラフ】
新しい空白の段落を挿入します。
PasteExcelTable
【 ペーストエクセルテーブル】
Excel の表を貼り付け、書式を設定します。

TypeText【タイプテキスト】メソッド

Wordドキュメントに指定した文字列を挿入するには、WordApplication【ワードアプリケーション】オブジェクトのActiveWindow.Selection【アクティブウインドウ セレクション】オブジェクトのTypeText【タイプテキスト】メソッドを使用します。

TypeText【タイプテキスト】メソッドの書式と設定値(引数)の説明

オブジェクト.ActiveWindow.selection.TypeText( Text )

  • オブジェクト(必須)
    Wordドキュメントを表すオブジェクト変数を指定します。
  • Text【テキスト】
    Wordドキュメントに挿入する文字列を文字列型(String)で指定します。

TypeParagraph【タイプパラグラフ】メソッド

Wordドキュメントに空白の段落を挿入するには、WordApplication【ワードアプリケーション】オブジェクトのActiveWindow.Selection【アクティブウインドウ セレクション】オブジェクトのTypeParagraph【タイプパラグラフ】メソッドを使用します。

TypeParagraph【タイプパラグラフ】メソッドの書式と設定値の説明

オブジェクト.ActiveWindow.Selection.TypeParagraph

  • オブジェクト(必須)
    段落を追加するWordドキュメントを表す、オブジェクト変数を指定します。

PasteExcelTable【ペーストエクセルテーブル】メソッド

コピーされたExcel の表を貼り付け、書式を設定するには、WordApplication【ワードアプリケーション】オブジェクトのActiveWindow.Selection【アクティブウインドウ セレクション】オブジェクトの
PasteExcelTable【ペーストエクセルテーブル】メソッドを使用します。

PasteExcelTable【ペーストエクセルテーブル】メソッドの書式と設定値(引数)の説明

オブジェクト.ActiveWindow.Selection. _
PasteExcelTable
( LinkedToExcel, WordFormatting, RTF )

  • オブジェクト(必須)
    Excelの表を貼り付けるWordドキュメントを表すオブジェクト変数を指定します。
  • LinkedToExcel【リンクツトゥエクセル】(必須)
    貼り付けた表を元のExcelの表とリンクさせるかどうかをブール型(Boolean)の値で設定します。

    設定値内容
    Falseリンクしません。
    Trueリンクします。
  • WordFormatting【ワードフォーマッティング】(必須)
    表の書式をExcelの書式を使用するかしないかをブール型(Boolean)の値で設定します。

    設定値内容
    False元のExcelの書式を引き継ぎます。
    TrueWordの書式を使用して設定します。
  • RTF【リッチテキストファイル】(必須)
    表の貼付け形式をブール型(Boolean)の値で設定します。

    設定値内容
    FalseHTML形式で貼り付けます。
    Trueリッチ テキスト形式 (RTF) で貼り付けます。

Excelの表を新規作成したWordドキュメントに書き出すコードと解説

Sub 表書き出し()
Dim ワード As New Word.Application
Dim 文書 As Word.Document
Dim 名前 As String
Dim パス As String
名前 = InputBox("ワードのファイル名を入力してください")
パス = ThisWorkbook.Path & "¥" & 名前 & ".docx"
Set 文書 = ワード.Documents.Add
With 文書
.ActiveWindow.Selection.TypeText Text:=Range("A1").Value
.ActiveWindow.Selection.TypeParagraph
Range("A2:E14").Copy
.ActiveWindow.Selection.PasteExcelTable False, False, False
.SaveAs2 パス
.Close
End With
MsgBox パス & "にワード文書を追加しました。"
Set 文書 = Nothing
ワード.Quit: Set ワード = Nothing
Application.CutCopyMode = False
End Sub
2行目【Dim ワード As New Word.Application】
Wordを表すApplicationオブジェクトのインスタンス(複製)を作成します。Word VBA「ライブラリファイル」への参照設定が必要になります。


3行目【Dim 文書 As Word.Document】
Wordドキュメントを表す変数「文書」をオブジェクト型(Word.Document)で宣言します。


4行目【Dim 名前 As String】
新規Wordドキュメントを保存するときの名前を格納する変数「名前」を文字列型(String)で宣言します。


5行目【Dim パス As String】
新規Wordドキュメントのパスと変数名前に格納されている文書名を格納する変数パスを文字列型(String)で宣言します。


6行目【名前 = InputBox(“ワードのファイル名を入力してください”)】
InputBox【インプットボックス】関数を使用してユーザーからWordドキュメントのファイル名を受け取り変数「名前」に代入します。


7行目【パス = ThisWorkbook.Path & “¥” & 名前 & “.docx”】
新規で開くWordドキュメントのパスを含めた名前を変数「パス」に代入します。ThisWorkbook.Pathでこのコードが記述されているExcelファイルと同じパス(場所)のユーザーが入力して変数に格納した変数「名前」のWordドキュメントファイルを設定して代入します。


8行目【Set 文書 = ワード.Documents.Add】
WordApplication【ワードアプリケーション】のインスタンス(複製)が格納されている変数「ワード」オブジェクトのDocuments【ドキュメンツ】オブジェクトのAdd【アド】メソッドを使用して新しいWordドキュメントを作成しSetキーワードを使用してオブジェクト型変数「文書」に格納します。


9行目【With 文書】
Add【アド】メソッドで作成されたWordドキュメントが格納されている変数「文書」をWith【ウィズ】ステートメントで指定します。


10行目【.ActiveWindow.Selection.TypeText Text:=Range(“A1”).Value】
With【ウィズ】ステートメントで指定したWordドキュメントのTypeText【タイプテキスト】メソッドを使用してWordドキュメントに文字列を書き出します。書き出す文字列をしていする、引数TextにExcelのA1セルの値をValue【バリュー】プロパティで取得し設定します。


11行目【.ActiveWindow.Selection.TypeParagraph】
With【ウィズ】ステートメントで指定したワードドキュメントのTypeParagraph【タイプパラグラフ】メソッドを使用してWordドキュメントに段落を設定します。


12行目【Range(“A2:E14”).Copy】
Excelの表範囲をRange【レンジ】プロパティで指定して、Range【レンジ】オブジェクトのCopy【コピー】メソッドでその範囲をコピーします。


13行目【.ActiveWindow.Selection.PasteExcelTable False, False, False】
With【ウィズ】ステートメントで指定したWordドキュメントのPasteExcelTable【ペーストエクセルテーブル】メソッドを使用してコピーしたExcelの表を指定したWordドキュメントに貼り付けます。


14行目【.SaveAs2 パス】
WordApplication【ワードアプリケーション】オブジェクトのSaveAs2【セーブアズツー】メソッドを使用してWith【ウィズ】ステートメントで指定したワードドキュメントを変数「パス」に格納されている名前を付けて保存します。


15行目【.Close】
WordApplication【ワードアプリケーション】オブジェクトのClose【クローズ】メソッドを使用してWith【ウィズ】ステートメントで指定したワードドキュメントを閉じます。


17行目【MsgBox パス & “にワード文書を追加しました。”】
MsgBox関数を使用してWordドキュメントの保存先と書き出しが終了したことをユーザーに伝えます。


18行目【Set 文書 = Nothing】
オブジェクト変数「文書」にNothing【ナッシング】を代入してWordドキュメントへの参照を解放します。


19行目【ワード.Quit: Set ワード = Nothing】
WordApplication【ワードアプリケーション】オブジェクトのQuit【クエイト】メソッドを使用してワードを終了させてワードのインスタンスが格納されているオブジェクト変数「ワード」にNothingを代入してWordApplicationへの参照を解放します。


20行目【Application.CutCopyMode = False】
Application【アプリケーション】オブジェクトのCutCopyMode【カットコピーモード】プロパティにFalseを設定してワークシートのコピーモードを解除します。


実行結果





以上で、Excelで作成した表をWordドキュメントに書き出す方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告