PowerPointのノート機能を使い、スライド枚数の多いプレゼン資料を作っていると、ノートを出力したいという要望が出るようです。
何に出力するのかは、お仕事・職場・組織によっていろいろのようですが、今日は、PowerPointのノートをExcelに出力する、PowerPointのマクロをご紹介します。
ノートをExcelに出力するサンプルマクロ
以下のマクロを実行すると、アクティブなプレゼンテーションファイルのすべてのノートが、A列にスライド番号、B列にノートというフォーマットでExcelに出力されます。
Dim xls As Object 'Excel.Application
Dim sld As Slide
Dim txt As String
Dim n As Long
Set xls = CreateObject("Excel.Application")
With xls
.Visible = True
.SheetsInNewWorkbook = 1
.Workbooks.Add
.Range("A1").Value = "スライド番号"
.Range("B1").Value = "ノート"
.Range("A1:B1").HorizontalAlignment _
= -4108 'xlCenter
n = 2
For Each sld In ActivePresentation.Slides
txt = _
sld.NotesPage.Shapes. _
Placeholders(2).TextFrame.TextRange
txt = Replace(txt, vbTab, " ")
txt = Replace(txt, vbVerticalTab, vbLf)
txt = Replace(txt, vbCrLf, vbLf)
txt = Replace(txt, vbCr, vbLf)
.Cells(n, "A").Value = sld.SlideNumber
.Cells(n, "B").Value = txt
n = n + 1
Next sld
.Range("A2", .Cells(n, "B")).VerticalAlignment _
= -4160 'xlTop
.Range("A2", .Cells(n, "B")).WrapText = True
.Columns("B:B").ColumnWidth = 100
.Range("A2", .Cells(n, "B")).EntireRow.AutoFit
End With
Set xls = Nothing
サンプルマクロの解説
まず、シートが1枚のExcelブックを作成します。
Set xls = CreateObject("Excel.Application")
With xls
.Visible = True
.SheetsInNewWorkbook = 1
.Workbooks.Add
はじめてこのマクロを実行するときはExcelの動きが見えるほうが楽しいでしょうから、いきなり
.Visible = True
と表示させていますが、スピードが要求される場合は、表示を最後のほう、
End With
Set xls = Nothing
の直前にするほうがおすすめです。
次に、作成したExcelブックの1行目に見出しを作成します。
.Range("A1").Value = "スライド番号"
.Range("B1").Value = "ノート"
.Range("A1:B1").HorizontalAlignment _
= -4108 'xlCenter
参照設定なしにしているので、ExcelのRangeオブジェクトのHorizontalAlignmentプロパティ(横方向の位置)を「-4108」と数値で指定していますが、参照設定するのであれば定数・xlCenterで指定するほうが、可読性が上がっていいでしょう。
PowerPointのアクティブなプレゼンテーションファイルの全スライドにループを回して、
For Each sld In ActivePresentation.Slides
ノートの文字列を変数・txtに格納します。
txt = _
sld.NotesPage.Shapes. _
Placeholders(2).TextFrame.TextRange
ノートにタブがあった場合にはスペースに置換し、
txt = Replace(txt, vbTab, " ")
各種改行があったときに、Excelの改行コードに置換します。
txt = Replace(txt, vbVerticalTab, vbLf)
txt = Replace(txt, vbCrLf, vbLf)
txt = Replace(txt, vbCr, vbLf)
ExcelのA列にスライド番号、
.Cells(n, "A").Value = sld.SlideNumber
B列に整形したノートの文字列を出力して、
.Cells(n, "B").Value = txt
行番号指定用の変数・nをインクリメントします。
n = n + 1
ループが終わったら、ノートを書き出したセルの書式を設定します。
.Range("A2", .Cells(n, "B")).VerticalAlignment _
= -4160 'xlTop
.Range("A2", .Cells(n, "B")).WrapText = True
.Columns("B:B").ColumnWidth = 100
.Range("A2", .Cells(n, "B")).EntireRow.AutoFit
縦方向の文字の配置を設定する
.Range("A2", .Cells(n, "B")).VerticalAlignment _
= -4160 'xlTop
の部分は、先の見出しの横方向の配置と同様、参照設定していないため数値「-4160」を指定していますが、参照設定する場合は定数・xlTopを使いましょう。
- Newer:Word VBAでアクティブページを削除する
- Older:Excel 2013・2010・2007で置換は?
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » ノート » ノートをExcelに出力するPowerPointマクロ