パワーポイントの目次を一瞬で作る方法を知りたいときはないでしょうか。
けど、そんな中で悩むことは、
・VBAでパワーポイントの目次を一瞬で作る方法がわからない
ですよね。
今回はそんなお悩みを解決する
についてまとめます!
もくじ
パワーポイントの目次を一瞬で作るイメージ
そんな経験から自動化ツールを作成し、公開します。
同じ境遇の方々にお役立ちできればと思っています。
パワーポイントの目次を一瞬で作るイメージについて説明をします。
まずはタイトル出力先となる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」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す