タイトルプレースホルダの文字列を、ノートに転記するマクロをご紹介しました。
タイトルプレースホルダの文字列だけではなく、
「スライドで入力したすべての文字列をノートに転記するにはどうすればいいのでしょうか?」
というご質問をいただきました。
スライド内の全文字列をノートに転記するサンプルマクロ
ループ処理の中でループ処理を行うマクロを、VBAで作成することで、スライド内の全文字列をノートに転記することができます。
Dim sld As Slide
Dim shp As Shape
Dim txt As String
If MsgBox("スライド内のすべての文字列をノートへ転記しますか?(既に入力されているノートは削除されます)", vbYesNo) = vbNo Then Exit Sub
For Each sld In ActivePresentation.Slides
txt = "" For Each shp In sld.Shapes
If shp.HasTextFrame Then
txt = txt & shp.TextFrame.TextRange.Text & vbCrLf
End If
Next shp
sld.NotesPage.Shapes.Placeholders(2) _
.TextFrame.TextRange.Text = txt
Next sld
MsgBox "ノートへの転記が、完了しました。"
End Sub
上記のマクロを実行すると、
「スライド内のすべての文字列をノートへ転記しますか?(既に入力されているノートは削除されます)」
という確認メッセージが表示され、
[はい]ボタンをクリックして処理が完了すると
「ノートへの転記が、完了しました。」
というメッセージが表示されます。
元々ノートに何らかの文字列が入力されていた場合は、削除されます。
サンプルマクロの解説
テキストが含まれているかどうかをHasTextFrameプロパティを使って調べ、文字列が存在していた場合にノートへの転記する処理を、全スライドに対して行っています。
アクティブなプレゼンテーション内の、全スライドに対するFor Each~Nextループの中で、
For Each sld In ActivePresentation.Slides
スライド内の全Shapeオブジェクトに対するFor Each~Nextループを回して、
For Each shp In sld.Shapes
テキストが含まれているかどうかをHasTextFrameプロパティを使って調べ、文字列が存在していた場合に、
If shp.HasTextFrame Then
txt = txt & shp.TextFrame.TextRange.Text & vbCrLf
ノートへの転記を行っています。
sld.NotesPage.Shapes.Placeholders(2) _
.TextFrame.TextRange.Text = txt
最終更新日時:2018-09-14 05:15
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » ノート » スライド内の全文字列をノートに転記するPowerPointマクロ