【ExcelVBA・マクロ】Wordを起動して表をコピーする方法|Excelの表をWordへ貼り付けるコード【コピペOK】

Wordを起動して表をコピーする方法 ExcelVBA

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へ自動でコピーできるようになると、報告書や資料作成の作業時間を大きく短縮できます。
特に定型作業が多い方には非常におすすめなので、ぜひ活用してみてください。


スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました