「パワーポイント マクロ ノート ワードに貼り付け」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
PowerPointのノートをWordにコピー・アンド・ペーストするためのマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
実務では、PowerPointのノートだけを印刷したいというニーズがあります。
印刷をするにはPowerPointよりWordのほうが向いていますから、Wordにノートをコピペしようと考えるのは納得ができます。
ですが、コピペをマクロ化するより、ノートの文字列だけを出力するマクロを作るほうがいいのではないかと感じます。
ノートをWordにエクスポートするサンプルマクロ
以下のようなマクロで、アクティブなプレゼンテーションのノートをWordに出力することができます。
Dim sld As Slide
Dim wd_app As Object ' Word.Application
Dim wd_doc As Object ' Word.Document
Set wd_app = CreateObject("Word.Application")
wd_app.Visible = True
Set wd_doc = wd_app.Documents.Add
For Each sld In ActivePresentation.Slides
wd_doc.Bookmarks("\EndOfDoc").Range.InsertAfter _
Text:=sld.NotesPage.Shapes.Placeholders(2) _
.TextFrame.TextRange & vbCrLf
Next sld
Set wd_doc = Nothing
Set wd_app = Nothing
上記のPowerPointマクロを実行すると、新規にWordが起動して、アクティブなプレゼンテーションファイル上のノートが、Word文書にエクスポートされます。
サンプルマクロの解説
WordをCreateObjectして、
Set wd_app = CreateObject("Word.Application")
Wordを表示し、
wd_app.Visible = True
新規Word文書を挿入します。
Set wd_doc = wd_app.Documents.Add
ここまでは、PowerPoint・Wordを連携したマクロの定番処理です。
アクティブなプレゼンテーションファイルの全スライドにループを回して、
For Each sld In ActivePresentation.Slides
Word文書の末尾に、PowerPointのノートの文字列をエクスポートしています。
wd_doc.Bookmarks("\EndOfDoc").Range.InsertAfter _
Text:=sld.NotesPage.Shapes.Placeholders(2) _
.TextFrame.TextRange & vbCrLf
Word文書の最後に、ノートを追加していくために、Bookmarksプロパティの引数に「\EndOfDoc」を指定して、そのRangeオブジェクトにInsertAfterしています。
InsertAfterメソッドの引数・Textには、PowerPointのノートの文字列を指定しています。
Text:=sld.NotesPage.Shapes.Placeholders(2) _
.TextFrame.TextRange & vbCrLf
ノートの文字列を取得する階層の深い、
「sld.NotesPage.Shapes.Placeholders(2).TextFrame.TextRange」
というオブジェクト式の意味は、以下のとおりです。
SlideオブジェクトのNotesPageプロパティで、ノートを表すSlideRangeオブジェクトを取得します。
この、Slideオブジェクトからノートを表すSlideRangeオブジェクトを取得するところが、ヒトがPowerPointの階層に対して持っているイメージとちょっと違うため、腑に落ちにくいところだと感じます。
SlideRangeオブジェクトのShapesプロパティでShapesコレクションオブジェクトを取得し、
ShapesコレクションオブジェクトのPlaceholdersプロパティの引数に「2」を指定して、ノートの文字列の入力されているShapeを取得し、
ShapeオブジェクトのTextFameプロパティでTextFrameオブジェクトを取得して、
TextFrameオブジェクトのTextRangeプロパティでTextRangeオブジェクトを取得して、
TextRangeオブジェクトのデフォルトプロパティであるTextプロパティからノートの文字列を取得しています。
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » ノート » ノートをWordにエクスポートするPowerPointマクロ