2015年4月24日金曜日

ExcelVBA(マクロ)でWordのページ数の取得を行う方法

ExcelVBA(マクロ)でWordのページ数の取得
Excel VBAでWordのページ数を取得するやり方を書いてみました。 マクロを使ったページ数の確認方法は2つあります。マクロの中でWordファイルを開いて確認するか、開かずに確認するかという違いがあります。 まず、実際のコードを紹介します。
Wordファイルを開かずにページ数を確認
Private Function get_page_cnt_word(sFile As String, sPath As String) As Long
'ページ数の取得を行う関数(Word)
'引数:処理対象のファイル名、処理対象ファイルの格納フォルダ
 
    Dim wdDoc As Object
    
    'オブジェクトを取得
    Set wdDoc = GetObject(sPath & "\" & sFile)
    
    'ページ数を取得
    get_page_cnt_word =  wdDoc.BuiltinDocumentProperties(14).Value
   
   'オブジェクト変数を解放
   Set  wdDoc = Nothing

End Function

ファイルを開かずにページ数を取得するためには、Dsofile.dllのインストールが必要になります。詳しくは下記の記事を参照ください。
Dsofile.dllのダウンロード・使い方

Wordファイルを開いてページ数を確認
Private Function get_page_cnt_word(sFile As String, sPath As String) As Long
‘ページ数の取得を行う関数(Word)
'引数:処理対象のファイル名、処理対象ファイルの格納フォルダ

   Dim wdApp As Object
   Dim wdDoc As Object
   Dim lCount As Long

   Set wdApp = CreateObject(“Word.Application”)

   'ファイルオープン
   Set wdDoc = wdApp.Documents.Open(sPath & “" & sFile)
   'ページ数取得
   lCount = wdDoc.ComputeStatistics(Statistic:=wdStatisticPages, IncludeFootnotesAndEndnotes:=True)

   'Wordを閉じる
   wdDoc.Close
   wdApp.Application.Quit

   'ページ数表示
   get_page_cnt_word = lCount

   'オブジェクト変数を解放
   Set wdDoc = Nothing
   Set wdApp = Nothing

End Function
それぞれの方法のメリット・デメリット
Wordファイルを開かずにページ数を確認
メリット
  • 処理速度が速い
デメリット
  • 実際のページ数と違った値を出すことがある
  • dsofile.dllをインストールする必要がある
Wordファイルを開いてページ数を確認
メリット
  • 正確なページ数を取得することができる
デメリット
  • ファイルを開くため、処理速度が遅い
  • 参照設定を行う必要がある

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

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