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

ノートをExcelに出力するPowerPointマクロ

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013

PowerPointのノート機能を使い、スライド枚数の多いプレゼン資料を作っていると、ノートを出力したいという要望が出るようです。

何に出力するのかは、お仕事・職場・組織によっていろいろのようですが、今日は、PowerPointのノートをExcelに出力する、PowerPointのマクロをご紹介します。

[スポンサードリンク]

ノートをExcelに出力するサンプルマクロ

以下のマクロを実行すると、アクティブなプレゼンテーションファイルのすべてのノートが、A列にスライド番号、B列にノートというフォーマットでExcelに出力されます。

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

End Sub

サンプルマクロの解説

まず、シートが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を使いましょう。

[スポンサードリンク]

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

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

.