Excelで作った表をWordに貼り付ける作業を、毎回手作業で行っていませんか?
- Excelの表をWordに何度も貼り付けている
- 報告書や議事録を自動作成したい
- 表の転記作業をマクロで自動化したい
このような場合は、ExcelVBAからWordを起動して表をコピーすることで解決できます。
一度コードを作っておけば、Excelの表をWordへ自動で貼り付けられるので、報告書作成の効率が大きく上がります。
この記事では、Wordを起動してExcelの表をコピーするVBAコードを、初心者向けに分かりやすく解説します。
この記事でできること
- ExcelVBAからWordを起動できる
- Excelの表をコピーできる
- Word文書に表を貼り付けできる
- 報告書や資料作成を自動化できる
まず準備:今回コピーする表のイメージ
例えば、ExcelのA1:D10に次のような表があるとします。
- 氏名
- 部署
- 件数
- 備考
この範囲を、そのままWordへ貼り付けるイメージです。
完成コード(コピペOK)
まずは基本コードです。
このコードは、ExcelのA1:D10をコピーして、新しく起動したWordに貼り付けます。
Option Explicit
Sub CopyTableToWord()
Dim wdApp As Object
Dim wdDoc As Object
Dim copyRange As Range
' コピーする表の範囲
Set copyRange = ThisWorkbook.Worksheets("Sheet1").Range("A1:D10")
' Wordを起動
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True
' 新しい文書を作成
Set wdDoc = wdApp.Documents.Add
' Excelの表をコピー
copyRange.Copy
' Wordへ貼り付け
wdDoc.Content.Paste
MsgBox "Wordへ表をコピーしました。", vbInformation
End Sub
コードのポイントを解説
① Wordを起動する
Set wdApp = CreateObject("Word.Application")
このコードで、ExcelからWordを起動できます。CreateObject を使うことで、Wordを操作できるようになります。
② Wordを表示する
wdApp.Visible = True
これを入れることで、実際にWord画面が表示されます。
処理確認のため、最初は True にしておくのがおすすめです。
③ 新規文書を作る
Set wdDoc = wdApp.Documents.Add
新しいWord文書を1つ開きます。
④ Excelの表をコピーする
copyRange.Copy
指定した範囲をコピーしています。
⑤ Wordへ貼り付ける
wdDoc.Content.Paste
Word文書の本文へ、そのまま貼り付けています。
シート名や範囲を変更する方法
この部分を書き換えれば、好きな表をコピーできます。
Set copyRange = ThisWorkbook.Worksheets("Sheet1").Range("A1:D10")
例えば、Sheet2のA1:F20ならこうです。
Set copyRange = ThisWorkbook.Worksheets("Sheet2").Range("A1:F20")
実務向け:最終行まで自動で表をコピーする
行数が毎回変わる表では、最終行を自動取得すると便利です。
Option Explicit
Sub CopyDynamicTableToWord()
Dim wdApp As Object
Dim wdDoc As Object
Dim ws As Worksheet
Dim lastRow As Long
Dim copyRange As Range
Set ws = ThisWorkbook.Worksheets("Sheet1")
' A列を基準に最終行を取得
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' A1:D最終行をコピー範囲にする
Set copyRange = ws.Range("A1:D" & lastRow)
' Word起動
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True
' 新規文書
Set wdDoc = wdApp.Documents.Add
' コピー&貼り付け
copyRange.Copy
wdDoc.Content.Paste
MsgBox "表をWordへ貼り付けました。", vbInformation
End Sub
この方法なら、データ件数が増減しても対応できます。
表の前にタイトルを入れてから貼り付ける
Word文書にタイトルを入れて、その下に表を貼りたい場合はこちらです。
Option Explicit
Sub CopyTableToWord_WithTitle()
Dim wdApp As Object
Dim wdDoc As Object
Dim copyRange As Range
Set copyRange = ThisWorkbook.Worksheets("Sheet1").Range("A1:D10")
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Add
' タイトル入力
wdDoc.Content.InsertAfter "売上集計表" & vbCrLf & vbCrLf
' 末尾へカーソル移動して貼り付け
wdDoc.Content.Collapse Direction:=0
copyRange.Copy
wdDoc.Content.Paste
End Sub
これで「売上集計表」という見出しの下に表を貼り付けられます。
値だけを貼りたい場合の考え方
通常の貼り付けでは、Excelの見た目ごとWordに貼り付きます。
もし「値だけ」「シンプルな表」として貼りたい場合は、貼り付け方法を調整する方法もあります。
まずは基本の Paste で十分ですが、将来的には
- 書式付きで貼る
- 画像として貼る
- テキストだけ貼る
といった応用も可能です。
実務での活用例
- Excel集計表をWord報告書へ貼り付ける
- 会議資料を自動作成する
- 見積一覧をWord文書へ転記する
- 定型レポートを自動生成する
特に、毎回同じ形式の報告書を作る業務では非常に効果があります。
よくあるエラーと対処法
① Wordが起動しない
Wordがインストールされていない、または正常に使えない環境だとエラーになります。
まずはPCでWordが開けるか確認してください。
② シート名が違う
次の部分のシート名が、実際の名前と一致しているか確認してください。
ThisWorkbook.Worksheets("Sheet1")
③ コピー範囲が違う
表の位置が変わっている場合は、Rangeの指定を見直してください。
④ コードは正しいのにエラーになる
Webからコピーしたコードでは、全角記号や見えない特殊文字が混ざることがあります。
その場合は、エラーの出ている行を削除して手入力し直すと解決することがあります。
まとめ
- Word起動は
CreateObject("Word.Application") - 表のコピーは
Range.Copy - Word貼り付けは
Paste - 最終行取得と組み合わせると実務で使いやすい
Excelの表をWordへ自動でコピーできるようになると、報告書や資料作成の作業時間を大きく短縮できます。
特に定型作業が多い方には非常におすすめなので、ぜひ活用してみてください。


コメント