スライド上の文字列を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マクロ-改行・改ページあり

『インストラクターのネタ帳』では、2003年10月からMicrosoft Officeの使い方などを紹介し続けています。










