Home » パワーポイントマクロ・PowerPoint VBAの使い方 » ノート » ノートをWordにエクスポートするPowerPointマクロ

ノートをWordにエクスポートするPowerPointマクロ

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013

ノートをWordにエクスポートするPowerPointマクロ

「パワーポイント マクロ ノート ワードに貼り付け」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

PowerPointのノートをWordにコピー・アンド・ペーストするためのマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。

実務では、PowerPointのノートだけを印刷したいというニーズがあります。

印刷をするにはPowerPointよりWordのほうが向いていますから、Wordにノートをコピペしようと考えるのは納得ができます。

ですが、コピペをマクロ化するより、ノートの文字列だけを出力するマクロを作るほうがいいのではないかと感じます。

[スポンサードリンク]

ノートをWordにエクスポートするサンプルマクロ

以下のようなマクロで、アクティブなプレゼンテーションのノートをWordに出力することができます。

Sub ノートを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

End Sub

上記の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オブジェクトを取得します。

ノートをWordにエクスポートするPowerPointマクロ

この、Slideオブジェクトからノートを表すSlideRangeオブジェクトを取得するところが、ヒトがPowerPointの階層に対して持っているイメージとちょっと違うため、腑に落ちにくいところだと感じます。

SlideRangeオブジェクトのShapesプロパティでShapesコレクションオブジェクトを取得し、

ノートをWordにエクスポートするPowerPointマクロ

ShapesコレクションオブジェクトのPlaceholdersプロパティの引数に「2」を指定して、ノートの文字列の入力されているShapeを取得し、

ノートをWordにエクスポートするPowerPointマクロ

ノートをWordにエクスポートするPowerPointマクロ

ShapeオブジェクトのTextFameプロパティでTextFrameオブジェクトを取得して、

ノートをWordにエクスポートするPowerPointマクロ

TextFrameオブジェクトのTextRangeプロパティでTextRangeオブジェクトを取得して、

ノートをWordにエクスポートするPowerPointマクロ

TextRangeオブジェクトのデフォルトプロパティであるTextプロパティからノートの文字列を取得しています。

ノートをWordにエクスポートするPowerPointマクロ

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » ノート » ノートをWordにエクスポートするPowerPointマクロ

Copyright © インストラクターのネタ帳 All Rights Reserved.

.