「powerpoint word 変換」
「パワーポイント ワードに変換」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがあります。
PowerPointには、文字列をWordへ送るコマンドも用意されていますが、その結果が期待するものとは違っている場合に、VBA(Visual Basic for Applications)でマクロを作ってしまおうと考える方もいらっしゃるようです。
文字列をWordに書き出すサンプルマクロ
細かな要望を入れていくと複雑なマクロになりますが、まずは、一番シンプルな形のPowerPointマクロをご紹介します。
Dim sld As Slide
Dim shp As Shape
Dim wd_app As Object
Dim wd_doc 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.HasTextFrame Then
wd_doc. _
Bookmarks("\EndOfDoc").Range.InsertAfter _
Text:=shp.TextFrame.TextRange
End If
Next shp
Next sld
Set wd_doc = Nothing
Set wd_app = Nothing
上記のPowerPointマクロを実行すると、Wordが起動して、スライド内の文字列がWordの新規文書に出力されます。
サンプルマクロの解説
WordをCreateObjectして、
Set wd_app = CreateObject("Word.Application")
表示してから、
wd_app.Visible = True
新規のWord文書を挿入します。
Set wd_doc = wd_app.Documents.Add
PowerPointのアクティブなプレゼンテーションファイルの全スライドにループを回し、
For Each sld In ActivePresentation.Slides
その個々のスライドで、全図形に対してループを回して、
For Each shp In sld.Shapes
もしも図形に文字列が含まれていたら、
If shp.HasTextFrame Then
先に作成した新規のWord文書の末尾に文字列を出力しています。
wd_doc. _
Bookmarks("\EndOfDoc").Range.InsertAfter _
Text:=shp.TextFrame.TextRange
Word文書の末尾の指定の仕方はいろいろありそうですが、ここでは、定義済みブックマークの「\EndOfDoc」をBookmarksプロパティの引数に指定する方法を使いました。
Bookmarksの引数に「\EndOfDoc」を指定することで、Bookmarkオブジェクトを取得して、
BookmarkオブジェクトのRangeプロパティを使ってRangeオブジェクトを取得して、
RangeオブジェクトのInsertAfterメソッドで、
PowerPointのShape内のTextFrame内の、
TextRange内の文字列を、
Word文書の末尾に挿入しています。
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » 文字列をWordに書き出すPowerPointマクロ