スライド上の文字列をWordに出力するPowerPointマクロをご紹介しました。
このタイプのマクロは、要望がいろいろと出てくるものです。
前回ご紹介したマクロで、まず出てきそうな要望は、改行と改ページでしょう。
前回ご紹介したマクロは、Shape内の文字列を、ひたすらWord文書の末尾に出力し続けるという仕様でした。
このマクロをご覧になった方からは、Shapeごとに改行を入れたい、スライドごとに改ページを入れたいという要望がよく出てきます。
文字列をWordに出力するサンプルマクロ
以下のようなマクロにすれば、Shapeごとに改行が、スライドごとに改ページが入るようになります。
Dim sld As Slide
Dim shp As Shape
Dim end_sld As Long
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
end_sld = ActivePresentation.Slides.Count
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 & vbCrLf
End If
Next shp
If sld.SlideIndex <> end_sld Then
wd_doc. _
Bookmarks("\EndOfDoc").Range.InsertBreak _
Type:=7 ''7=wdPageBreak(改ページ)
End If
Next sld
Set wd_doc = Nothing
Set wd_app = Nothing
基本的な構造は前回ご紹介したマクロと同じで、改行と改ページを入れる処理だけを追加しました。
Slideごとに改ページを入れる処理
スライドごとに改ページを入れる仕様にするときに、最後のスライドの後ろにだけは改ページを入れる必要はありませんから、スライド全体のループに入る前に、スライドの枚数を変数・end_sldに格納しておいて、
end_sld = ActivePresentation.Slides.Count
スライド全体に対するループ処理の中で、最後のスライドでなければ改ページを挿入するようにしています。
If sld.SlideIndex <> end_sld Then
wd_doc. _
Bookmarks("\EndOfDoc").Range.InsertBreak _
Type:=7
End If
PowerPoint側で参照設定をしなくても動作するマクロにするため、Range.InsertBreakメソッドの引数・Typeには、定数・wdPageBreakのリテラル「7」を指定しています。
Shapeごとに改行を入れる処理
図形ごとに改行を入れる処理は、前回のマクロを少し修正しただけです。
Word文書の末尾に文字列を出力するときに、改行コード・vbCrLfを一緒に出力するようにしています。
wd_doc. _
Bookmarks("\EndOfDoc").Range.InsertAfter _
Text:=shp.TextFrame.TextRange & vbCrLf
- Newer:セル結合されているときに最終行番号をVBAで取得する
- Older:VBAで行全体が選択されているかどうかを判定する
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » 文字列をWordに書き出すPowerPointマクロ-改行・改ページあり