患者中心の保健医療を支える
処方情報分析のリーディングカンパニー

 03-3239-6840

[VBA]PowerPointに総ページ数を自動表示させる

time 2018/07/17

こんにちは、献血大好き!献血女子のキャンベルです。

今回は、パワーポイントに総ページ数を入れる方法をご紹介します。

パワーポイントで資料を作成する際、ページ数を入れることが多いかと思いますが、場合によっては、総ページ数も記載してあげた方がスライドを見る側にとっては全体ボリュームが把握できて親切ですよね。

そんな時、スライドマスタにページ総数を手動で入力していませんか?

そして編集しているうちにページ数が変わったりするとマスタを修正しなければならないので、手間がかかるうえに修正すること自体忘れそうです。

そこで、今回は総ページ数をマクロでささっと挿入する方法をご紹介します。
※スライドマスタについてはこちらの記事もご参照ください。→ パワーポイントでスライドマスターを使った資料作り

スライドの枚数をカウントするマクロを作成する

事前準備として、スライドマスタで総ページ数を表示するためのテキストボックスを用意しておいてください。(リボンメニュー[表示]>[スライドマスター])

デフォルトで用意されているページ数ボックスの右あたりにテキストボックスを追加しましょう。

※各ページ数の表示は、リボンメニュー[挿入]>[スライド番号]より、「スライド番号」にチェックを入れて適用します。
image01
このオブジェクトは後ほどマクロ内で使用するので、わかりやすい名前を付けておきましょう。

追加したテキストボックスを選択した状態で、リボンメニュー[書式]より、[配置]>[オブジェクトの選択と表示]をクリックし、オブジェクトの名前を編集します。私は「TotalPage」と変更しました。
image03
ここまでで事前準備は完了です。
リボンメニュー[開発]>[マクロ]を選択してください。

※開発メニューが表示されていない方は、リボンメニュー[ファイル]より、[オプション]>[リボンのユーザー設定]を選択し、[メインタブ]の中から[開発]にチェックを入れるとメニューに現れます。

好きな名前を設定して、[作成]ボタンをクリックします。
私は「setPageNum」としました。
image02

すると、Visual Basic Editorが起動するので、Sub xxx() 〜 End Sub の間に下のコードをペロッと貼ってください。

Sub setPageNum()

'------この下から貼り付け------

Dim PageNum As Long

'総スライド数を取得
PageNum = ActivePresentation.Slides.Count

'スライドマスタ開く
ActiveWindow.ViewType = ppViewSlideMaster

'さきほど追加したオブジェクトに総ページ数を選択
ActivePresentation.SlideMaster.Shapes("TotalPage").Select

'総ページ数をセット
ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Text = "/" & PageNum

'スライドマスタ閉じる
ActiveWindow.ViewType = ppViewSlide

'------ここまで貼り付け------

End Sub

以上で準備は完了です。

総ページ数を挿入しよう

では、先ほど作成したマクロを呼び出してみましょう。

スライドマスタをいったん閉じて、通常の表示に戻ってください。

リボンメニューより[開発]>[マクロ]で、先ほど作成したマクロ名を選択して[実行]ボタンをクリックしてみましょう。

すると、総ページ数が表示されたかと思います。

ただこのやり方だと、マクロを実行しないと最新の総ページ数をセットしないので、やはり実行を忘れると古い情報のままになってしまいます。

それが気になる方のために、パワーポイントを保存する時にこのマクロが自動実行されるように組み込みます。

ファイル保存時にマクロを自動で実行する

PowerPointでは、Excelのように「Auto_Open」や「Auto_Close」などは記述しただけでは自動で実行してくれません。

そのためひと手間かける必要があり、ここから先はあまりお勧めはしませんが、アドインとして読み込む方法をご紹介します。

リボンメニューより[開発]>[マクロ]で、先ほどのマクロ名を選択し、[編集]ボタンをクリックします。
image04
すると先ほどと同じようにVisual Basic Editorが起動します。

左側に「VBAProject」のツリーが表示されているかと思いますので、「VBAProject」の上で右クリックし下図のように「クラスモジュール」を追加してください。
すでにクラスモジュールが存在している場合は、その下に新規モジュールを追加してください。名前はお好きなもので構いません。
ここでは「Class1」にしています。
image05

作成したモジュールを開き、以下を貼りつけてください。

'クラスモジュールのClass1に記述
Public WithEvents PPTapp As Application

Private Sub PPTapp_PresentationSave(ByVal Pres As Presentation)
    setPageNum
End Sub

さらに、最初に作ったModule1の方にも追記し、最終的には以下のようになります。

'標準モジュールのModule1に記述
Public myEvent As New Class1

Public Sub startevent()
    Set myEvent = New Class1
    Set myEvent.PPTapp = Application
End Sub

Public Sub Auto_Open()
    startevent
End Sub


Public Sub setPageNum()

    Dim PageNum As Long
    
    '総スライド数を取得
    PageNum = ActivePresentation.Slides.Count
    
    'スライドマスタ開く
    ActiveWindow.ViewType = ppViewSlideMaster
    
    'さきほど追加したオブジェクトに総ページ数を選択
    ActivePresentation.SlideMaster.Shapes("TotalPage").Select
    
    '総ページ数をセット
    ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Text = "/" & PageNum
    
    'スライドマスタ閉じる
    ActiveWindow.ViewType = ppViewSlide

End Sub

これを「名前を付けて保存」でppam形式で保存することでアドイン形式になります。
そして、メニュー[開発]>[アドイン]で、先ほど保存したアドインを読み込むようにします。

すると、ファイル保存時に総ページ数をセットするマクロが実行され、いつでも最新の状態になります。

まとめ

いかがでしたでしょうか。

総ページ数をマクロでセットすることは比較的簡単なのですが、日々多くのプレゼン資料を作成していくなかで、自動実行までの手間をかけて実装するのは正直あまり現実的ではないかな、と個人的には感じています。

今後、標準機能で総ページ数がセットされるようになるといいなー。

最後までお読みいただきありがとうございました。

タグ

このブログについて

このブログ(JMIRI Office部)は、製薬企業のマーケティング部門の方やアナリティクス/レポーティングを担当している方に向け、Excel / PowerPointなどのOfficeソフトの使い方、分析の考え方、グラフの使い方、美しい資料の作り方、効率的な作業の進め方など、仕事に役立つ様々な情報を少しゆるめに発信していきます。

Author:医療情報総合研究所(JMIRI)について

医療情報総合研究所 JMIRIは、まだビックデータという言葉が無いころに日本で初めて処方情報データベースの運用・分析を開始した、処方情報分析のリーディングカンパニー。これまでに累計数十万ページ規模の分析レポート/グラフを製薬企業に向けて作成/提供してきました。

[詳細]


お問い合わせ

arrowup

mail