Home » パワーポイントマクロ・PowerPoint VBAの使い方 » ノート » スライド内の全文字列をノートに転記するPowerPointマクロ

スライド内の全文字列をノートに転記するPowerPointマクロ

対象:PowerPoint97, PowerPoint2000, PowerPoint2002, PowerPoint2003

タイトルプレースホルダの文字列を、ノートに転記するマクロをご紹介しました。

タイトルプレースホルダの文字列だけではなく、
「スライドで入力したすべての文字列をノートに転記するにはどうすればいいのでしょうか?」
というご質問をいただきました。

[スポンサードリンク]

スライド内の全文字列をノートに転記するサンプルマクロ

ループ処理の中でループ処理を行うマクロを、VBAで作成することで、スライド内の全文字列をノートに転記することができます。

Sub スライドの全文字列をノートに転記する()
 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マクロ

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

.