2015年4月26日日曜日

Excel VBAでパワーポイントのスライド数を取得するマクロ

ExcelVBAを使ってファイルを開かずにパワーポイントのスライド数を取得するマクロを紹介します。

ファイルを開かないでパワーポイントのスライド数を確認 サンプルコード

Private Function get_page_cnt_ppt(sFile As String, sPath As String) As Long
'ページ数の取得を行う関数(パワポ)
'引数:処理対象のファイル名、処理対象ファイルの格納フォルダ
        
    Dim obj As Object
    
    'オブジェクトを取得
    Set obj = GetObject(sPath & "\" & sFile)
    
    'スライド数を取得
    get_page_cnt_ppt = obj.BuiltinDocumentProperties(25).Value
    
    Set obj = Nothing
    
End Function
スライド数を取得するためには、BuiltinDocumentPropertiesに"25"もしくは"Number of Slides"を指定します。

参考:Dsofile.dllのダウンロード・使い方


ファイルを開かずにパワーポイントのスライド数を確認するには、Dsofile.dllが必要

ファイルを開かずにスライド数を取得するためには、Dsofile.dllをインストールする必要があります。つまり、このマクロを不特定多数の人が使う場合には、各自のPCにDsofile.dllをインストールしなくてはいけないということです。Dsofile.dllインストールが難しいという場合には、どうしたらよいのでしょうか。

その答えとしては、マクロの中でファイルを開くことでスライド数を確認するという方法があります。マクロの実行速度は落ちますが、特別な設定なしでスライド数を確認することが可能です。

ファイルを開いてパワーポイントのスライド数を確認 サンプルコード

Private Function get_page_cnt_ppt(sFile As String, sPath As String) As Long
'ページ数の取得を行う関数(パワポ)
'引数:処理対象のファイル名、処理対象ファイルの格納フォルダ

   Dim pp As Object
   Dim lCount As Long

   Set pp = CreateObject("PowerPoint.application”)

   With pp
      'ファイルオープン
       .Presentations.Open sPath  & "\" & sFile, ReadOnly:=True
      'スライド数取得
       lCount = .activepresentation.slides.Count
       
       'パワポを閉じる
       .Presentations(sFile).Close
       .Quit
   End With
   
   'オブジェクト変数を解放
   Set pp = Nothing
   get_page_cnt_ppt = lCount

End Function

この記事はお役に立てたでしょうか?
もし参考になると思っていただけたら、こちらのボタンから共有をお願いします。

このエントリーをはてなブックマークに追加