アクティブなプレゼンテーションファイル上のすべての表をExcelにエクスポートするPowerPointマクロをご紹介しました。
似たようなニーズですが、PowerPoint上の表をWordにエクスポートしたい、という要望をいただくこともあります。
Wordに表をエクスポートするサンプルマクロ
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
上記のマクロを実行すると、新規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
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » Wordに表をエクスポートするPowerPointマクロ