Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » Wordに表をエクスポートするPowerPointマクロ

Wordに表をエクスポートするPowerPointマクロ

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013

アクティブなプレゼンテーションファイル上のすべての表をExcelにエクスポートするPowerPointマクロをご紹介しました。

似たようなニーズですが、PowerPoint上の表をWordにエクスポートしたい、という要望をいただくこともあります。

[スポンサードリンク]

Wordに表をエクスポートするサンプルマクロ

Wordにエクスポートする場合は、以下のようなマクロです。

Sub ファイル内の表をWordに出力する()

 Dim sld As Slide
 Dim shp As Shape
 Dim tbl As Table
 Dim r As Long
 Dim c As Long
 Dim wd_app As Object
 Dim wd_doc As Object
 Dim wd_tbl As Object

 Set wd_app = CreateObject("Word.Application")

 wd_app.Visible = True
 Set wd_doc = wd_app.Documents.Add

 For Each sld In ActivePresentation.Slides
 For Each shp In sld.Shapes

  If shp.HasTable Then

   Set tbl = shp.Table

   Set wd_tbl = wd_doc.Tables.Add( _
     Range:=wd_doc.Bookmarks("\EndOfDoc").Range, _
     NumRows:=tbl.Rows.Count, _
     NumColumns:=tbl.Columns.Count)

   wd_tbl.Style = "表 (格子)"

   For r = 1 To tbl.Rows.Count
    For c = 1 To tbl.Columns.Count
     wd_tbl.Cell(r, c).Range.InsertAfter _
      tbl.Cell(r, c).Shape.TextFrame.TextRange
    Next c
   Next r

   wd_doc. _
    Bookmarks("\EndOfDoc").Range.InsertAfter vbCrLf

  End If

 Next shp
 Next sld

 Set wd_doc = Nothing
 Set wd_app = Nothing

End Sub

上記のマクロを実行すると、新規Word文書に、アクティブなプレゼンテーションファイル上の表がすべてエクスポートされます。

サンプルマクロの解説

やっていることは以下のとおりです。

まず、WordをCreateObjectして、
 Set wd_app = CreateObject("Word.Application")

Wordを表示して、
 wd_app.Visible = True

新規文書を作成します。
 Set wd_doc = wd_app.Documents.Add

アクティブなプレゼンテーションファイル上の全Slideにループを回し、
 For Each sld In ActivePresentation.Slides

各スライドで全Shapeにループを回し、
 For Each shp In sld.Shapes

ShapeにTableが存在していたら、
  If shp.HasTable Then

そのTabelをオブジェクト変数・tblに格納しておいてから、
   Set tbl = shp.Table

Word文書に同じサイズの表を挿入します。
   Set wd_tbl = wd_doc.Tables.Add( _
     Range:=wd_doc.Bookmarks("\EndOfDoc").Range, _
     NumRows:=tbl.Rows.Count, _
     NumColumns:=tbl.Columns.Count)

Word文書の末尾に追加したいので、WordのTables.Addメソッドの引数・Rangeにwd_doc.Bookmarks("\EndOfDoc").Rangeを指定し、NumRowsとNumColumnsにPowerPointの表の行数と列数を指定しています。

Wordに作成した表に罫線があったほうが見やすいでしょうから、スタイル「表 (格子)」を設定しています。
   wd_tbl.Style = "表 (格子)"

PowerPoint上の表の行方向にループを開始し、
   For r = 1 To tbl.Rows.Count

行方向のループの中で、列方向のループを開始して、
    For c = 1 To tbl.Columns.Count

Wordの表に、PowerPointの表のデータを出力しています。
     wd_tbl.Cell(r, c).Range.InsertAfter _
      tbl.Cell(r, c).Shape.TextFrame.TextRange

別の表がくっついてしまうとイヤなので、一つの表の出力が終わるごとに、Word文書の最後に改行コードを挿入しています。
    Next c
   Next r
   wd_doc. _
    Bookmarks("\EndOfDoc").Range.InsertAfter vbCrLf

関連語句
VBA, Visual Basic for Applications
[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » Wordに表をエクスポートするPowerPointマクロ

「表・テーブル」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.