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

コードの解説

1行目
【Dim ワード As New Word.Application】

Wordを表すApplicationオブジェクトのインスタンス(複製)を作成します。
Word VBA「ライブラリファイル」への参照設定が必要になります。


2行目
【Dim 文書 As Word.Document】

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


3行目
【Dim 名前 As String】

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


4行目
【Dim パス As String】

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


5行目
【名前 = InputBox(“ワードのファイル名を入力してください”)】

InputBox【インプットボックス】関数を使用して
ユーザーからWordドキュメントのファイル名を受け取り
変数「名前」に代入します。


6行目
【パス = ThisWorkbook.Path & “¥” & 名前 & “.docx”】

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


7行目
【Set 文書 = ワード.Documents.Add】

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


8行目
【With 文書】

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


9行目
【.ActiveWindow.Selection.TypeText Text:=Range(“A1”).Value】

Withステートメントで指定したWordドキュメントの
TypeText【タイプテキスト】メソッドを使用して
Wordドキュメントに文字列を書き出します。
書き出す文字列をしていする、引数Textに
ExcelのA1セルの値をValue【バリュー】プロパティで取得し設定します。


10行目
【.ActiveWindow.Selection.TypeParagraph】

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


11行目
【Range(“A2:E14”).Copy】

Excelの表範囲をRangeプロパティで指定して
RangeオブジェクトのCopy【コピー】メソッドで
その範囲をコピーします。


12行目
【.ActiveWindow.Selection.PasteExcelTable False, False, False】

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


13行目
【.SaveAs2 パス】

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


14行目
【.Close】

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


16行目
【MsgBox パス & “にワード文書を追加しました。”】

MsgBox関数を使用してWordドキュメントの保存先と書き出しが
終了したことをユーザーに伝えます。


17行目
【Set 文書 = Nothing】

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


18行目
【ワード.Quit: Set ワード = Nothing】

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


19行目
【Application.CutCopyMode = False】

Applicationオブジェクトの
CutCopyMode【カットコピーモード】プロパティにFalseを設定して
ワークシートのコピーモードを解除します。


実行結果





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

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク