パワーポイントの目次を一瞬で作る方法!変更も楽々!

パワーポイントの目次を一瞬で作る方法!変更楽々!

パワーポイントの目次を一瞬で作る方法を知りたいときはないでしょうか。

けど、そんな中で悩むことは、

・パワーポイントの目次を一瞬で作る方法がわからない
・VBAでパワーポイントの目次を一瞬で作る方法がわからない

ですよね。

今回はそんなお悩みを解決する

・パワーポイントの目次を一瞬で作る方法

についてまとめます!

パワーポイントの目次を一瞬で作るイメージ

タカヒロ
タカヒロ
プレゼン資料作成しているとき、気が付くと60ページほどになり、目次作成がとてつもなく大変でした…
そんな経験から自動化ツールを作成し、公開します。
同じ境遇の方々にお役立ちできればと思っています。

パワーポイントの目次を一瞬で作るイメージについて説明をします。

まずはタイトル出力先となるExcelシートを用意します。

次にタイトルを取得したいパワーポイントを開きます。

マクロを実行すると、

Excelのセルへパワーポイントのタイトルの一覧が出力されます!

ページ番号もつきますので、どのスライドのタイトルかもわかります!

次に目次を生成したいページ番号を指定し、目次生成マクロを実行すると、

目次スライドに目次となるタイトル一覧が生成されました!

それでは早速実装してためしてみましょう!

パワーポイントの目次を一瞬で作るための下準備

パワーポイントの目次を一瞬で作るための下準備をしていきましょう。

パワーポイントファイルを準備する

パワーポイントファイルを準備しましょう。

サンプルでは以下のタイトルがあるスライドが入っています。

〇〇〇提案書
目次
背景/導入
目標
方法/アプローチ
スケジュール
予算
成果物
評価/効果
リスク/課題
実績
おわりに

目次があるスライドは表紙の次の2スライド目に用意し、タイトルだけにしてください。

Excel台帳ファイルを準備する

パワーポイントのタイトルが書き込まれるExcelシートを用意します。

各セルの構成は以下の通りです。

A列 B列
タイトル名 ページ番号

このタイトル一覧をもとにパワーポイントへ目次一覧を作成していきます。

次にこのExcelにVBAのコードを実装していきます。

Excelからパワーポイントを操作できるよう設定する

ExcelからパワーポイントをVBAで操作できるよう設定をしていきましょう。

①Excelを起動し、「開発」タブをクリックします。

②VBEの画面が開いたら、メニューから「ツール」>「参照設定」を選択します。

③「Microsoft PowerPoint XX.X Object Library」を探してチェックボックスにチェックし「OK」をクリックします。

タカヒロ
タカヒロ
この設定がないと、マクロ実行後にエラーとなる場合がありますので、設定するようお願いします。

パワーポイントの目次を一瞬で作る方法

ここからVBAコードの設定、実装の内容となります。

今回のVBAは2つあります。

1つ目はパワーポイントのタイトル一覧をExcelに出力するVBAコードで目次を作成したいパワーポイントの各スライドのタイトルを取得します。

2つ目は今回のメインとなる目次を生成するVBAコードとなり、1つ目のタイトル一覧から目次を作成します。

パワーポイントのタイトル一覧をExcelに出力するVBAコード

パワーポイントのタイトル一覧をExcelに出力するコードになります。
こちらのコードは以下の記事でご紹介した内容になります。
パワーポイントの目次を一瞬で作る方法!変更も楽々!

Sub パワーポイントのタイトル一覧取得()
    Dim appPPT As Object
    Dim objPPTPres As Object
    Dim objPPTSlide As Object
    Dim strPPTTitle As String
    Dim intRowCount As Integer
    Dim intPPTPageNum As Integer
    
    ' PowerPointが起動しているかチェックします。
    On Error Resume Next
    Set appPPT = GetObject(, "PowerPoint.Application")
    On Error GoTo 0
    
    ' PowerPointが起動していない場合メッセージを表示します。
    If appPPT Is Nothing Then
        MsgBox "PowerPointが起動していません。"
        Exit Sub
    End If
    
    ' アクティブなプレゼンテーションを取得します。
    Set objPPTPres = appPPT.ActivePresentation
    
    ' タイトルを取得してExcelに出力します。
    If Not objPPTPres Is Nothing Then
        ' 出力するExcelの行番号を指定します。
        intRowCount = 1
        
        'Excelの1シート目を対象にします。
        With ThisWorkbook.Sheets(1)
            
            'A,B列の値をクリアします。
            .Range("A:B").Clear
        
            ' タイトルを出力します。
            For Each objPPTSlide In objPPTPres.Slides
                strPPTTitle = objPPTSlide.Shapes.Title.TextFrame.TextRange.Text
                intPPTPageNum = objPPTSlide.SlideNumber
                
                ' タイトルが存在する場合のみ出力します。
                If Len(strPPTTitle) > 0 Then
                    .Cells(intRowCount, 1).Value = strPPTTitle
                    .Cells(intRowCount, 2).Value = intPPTPageNum
                    intRowCount = intRowCount + 1
                End If
            Next objPPTSlide
        End With
        
        MsgBox "PowerPointのタイトルを取得し、Excelに出力しました。"
    Else
        MsgBox "アクティブなプレゼンテーションがありません。"
    End If
    
    ' PowerPointオブジェクトを解放します。
    Set objPPTSlide = Nothing
    Set objPPTPres = Nothing
    Set appPPT = Nothing
End Sub

パワーポイントの目次を生成するVBAコード

パワーポイントの目次を生成するVBAコードになります。
今回の記事のメインの内容となります。

Sub パワーポイントの目次へExcelの文字列を挿入する()
    
    Dim objPPTApp As Object
    Dim objPPTPres As Object
    Dim objPPTSlide As Object
    Dim objPPTShape As Object

    Dim strPPTTitle As String
    Dim intlastRow As Integer
    Dim i As Integer
    
    ' PowerPointが起動しているかチェックします。
    On Error Resume Next
    Set objPPTApp = GetObject(, "PowerPoint.Application")
    On Error GoTo 0
    
    ' PowerPointが起動していない場合メッセージを表示します。
    If objPPTApp Is Nothing Then
        MsgBox "PowerPointが起動していません。"
        Exit Sub
    End If
    
    ' アクティブなプレゼンテーションを取得します。
    Set objPPTPres = objPPTApp.ActivePresentation

    'Excelの最初のシートを参照します。
    With ThisWorkbook.Sheets(1)
        
    
        '列の最終行を取得します。
        intlastRow = .Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row
    
        'Excelシートの各行に対して処理を行います。
        For i = 3 To intlastRow
                
            '目次となる文字列を取得します。
            If .Cells(i, 1).Value <> "" Then

                If strPPTTitle <> "" Then
                    '目次2行目以降の文字列を変数に代入します。
                    strPPTTitle = strPPTTitle & Chr(10) & .Cells(i, 1).Value
                Else
                    '目次1行目の文字列を変数に代入します。
                    strPPTTitle = .Cells(i, 1).Value
                End If

            End If

        Next i
        
        '本文の処理です。
        If strPPTTitle <> "" Then

            ' パワーポイントの2スライド目を取得します。
            Set objPPTSlide = objPPTPres.Slides(2)

            'テキストボックスを追加します。
            Set objPPTShape = objPPTSlide.Shapes.AddTextbox(msoTextOrientationHorizontal, 110, 160, 700, 50)
            
            'テキストボックスに文字を追加します。
            objPPTShape.TextFrame.TextRange.Text = strPPTTitle
            
            'フォントサイズを変更します。
            objPPTShape.TextFrame.TextRange.Font.Size = 24
        End If
  
    End With

    Set objPPTApp = Nothing
    Set objPPTPres = Nothing
    Set objPPTSlide = Nothing
    Set objPPTShape = Nothing
    
    MsgBox "パワーポイントの2スライド目へ目次を貼り付けました!" & Chr(10) & "OKであれば保存してください。"
    
End Sub

VBAを設定する

VBAを設定していきましょう。

目次となるタイトル一覧の開始行を指定します。Excelの行番号を指定します。
サンプルは1スライド目の表紙、2スライド目の目次は対象外としているため3スライド目を開始行として指定しています。

For i = 3 To intlastRow

Excelの1シート目を対象にしますが、シート番号やシート名を変えると別のシートを参照することができます。

With ThisWorkbook.Sheets(1)

パワーポイントの2スライド目を目次として指定しています。目次が2スライド目ではない場合、この数値を変更してください。

Set objPPTSlide = objPPTPres.Slides(2)

フォントサイズを変更する場合は以下の数値を変更してください。ポイントの単位となります。

objPPTShape.TextFrame.TextRange.Font.Size = 24

VBAの実装

VBAの実装方法については
VBAの実装手順
をご参照ください。

実行する

VBAを実行しましょう。

はじめに目次を生成したいパワーポイントを表示させます。

一つ目の「パワーポイントのタイトル一覧取得」のマクロを実行します。

Excelにタイトル一覧が取得されましたね。

次に、二つ目の「パワーポイントの目次へExcelの文字列を挿入する」マクロを実行してみましょう。

はい!
パワーポイントの目次スライドへ取得したタイトル一覧が入りましたね!

パワーポイントのタイトルを変更し、目次を再作成する

以下のようにパワーポイントの一部タイトルを変更し、
再度タイトル一覧をExcelに出力、パワーポイントへ目次を再作成します。

パワーポイントの目次本文を削除

パワーポイントの目次本文を削除します。

実行する

VBAを実行しましょう。

一つ目の「パワーポイントのタイトル一覧取得」のマクロを実行し、
変更されたタイトルになっていることを確認します。

次に、二つ目の「パワーポイントの目次へExcelの文字列を挿入する」マクロを実行します。

はい!
パワーポイントの目次スライドへ変更後のタイトル一覧が入りましたね!

パワーポイントの目次を一瞬で作るVBAの説明

パワーポイントの目次を一瞬で作るVBAについて説明をします。

一つ目の「パワーポイントのタイトル一覧取得」のマクロの内容については以下の記事をご参考ください。
パワーポイントのタイトル一覧をExcelに出力する方法!目次楽々作成!

PowerPointが起動しているかチェックします。

On Error Resume Next
Set appPPT = GetObject(, "PowerPoint.Application")
On Error GoTo 0

PowerPointが起動していない場合メッセージを表示します。

If appPPT Is Nothing Then
MsgBox "PowerPointが起動していません。"
Exit Sub
End If

アクティブなプレゼンテーションを取得します。

Set objPptPres = appPPT.ActivePresentation

タイトルを取得してExcelに出力します。

If Not objPptPres Is Nothing Then

Excelの1シート目を対象にします。

With ThisWorkbook.Sheets(1)

A列の最終行を取得します。

intlastRow = .Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row

目次2行目以降の文字列を変数に代入します。

strPPTTitle = strPPTTitle & Chr(10) & .Cells(i, 1).Value

目次となるパワーポイントの2スライド目を取得します。

Set objPPTSlide = objPPTPres.Slides(2)

テキストボックスを追加します。

Set objPPTShape = objPPTSlide.Shapes.AddTextbox(msoTextOrientationHorizontal, 110, 160, 700, 50)

位置を変更したい場合はこちらの数値を変更してください。一つ目が左側、二つ目が上側の位置になります。

110, 160

テキストボックスに文字を追加します。

objPPTShape.TextFrame.TextRange.Text = strPPTTitle

フォントサイズを変更します。

objPPTShape.TextFrame.TextRange.Font.Size = 24

VBAの実装手順

実装手順は以下の通りです。

Excel側にVBAを実装していきます。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・パワーポイントの目次を一瞬で作る方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です