Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Excel 2016)
wordファイルのページ数を取得し、エクセルシートに転記する方法
投稿日時: 20/08/07 16:01:54
投稿者: PNPK

wordファイルのページ数を取得し、エクセルシートに転記する方法を教えてください。
 
◆wordファイルの概要
 研究報告資料になります。
 冒頭に表紙や研究者の名前等の記述があり、目次を挟んで本文が始まる構成です。
 目次はwordの機能(参考資料タブ内の機能)を用いて作成されております。
 
◆実現したいこと
 上記wordファイルに対して、
  @目次より前
  A目次
  B目次より後
 の3つのセクション毎にページ数を取得しエクセルシートに転記したいと考えております。
 
上記wordファイルが数百個存在するのですが、今後のことも考えて自動化できればと考えている次第です。
 
どうか皆さまのお知恵をお貸しください。
 
どうぞよろしくお願いいたします。

回答
投稿日時: 20/08/07 17:56:10
投稿者: WinArrow
投稿者のウェブサイトに移動

参考コード
 
 
目次云々対応はわかりませんが、1うのWORDファイルの総ページ数取得コードです・
Private Function DocPagesGet(DocName As String) As Long
    With oWord
        .ScreenUpdating = False
         
        If Dir(DocPath & "\" & DocName & ".doc") <> "" Then
            With .Documents.Open(DocPath & "\" & DocName & ".doc", ReadOnly:=True)
                .Repaginate
                DocPagesGet = .BuiltinDocumentProperties(14)
                .Close False
            End With
        Else
            DocPagesGet = 0
        End If
    End With
 
End Function
 

回答
投稿日時: 20/08/08 16:22:55
投稿者: WinArrow
投稿者のウェブサイトに移動

この案件は、WORDVBAの板が妥当と思います。
  
セクションごとのページ数を求めればよいと
 いうことでしょうね?
  
一発でセクションごとのページ数を求めるプロパティはないようなので
 セクション区切りが存在するページ番号を求め、
 1つ前のセクションのページ番号を差引くというコードになります。
  
例えば、3つのセクションで構成されているなあば、
 1つ目のセクション区切りのページ番号が「2」とすると、・・・・2(2−0)
 2つ目のセクション区切りのページ番号が「3」とすると、・・・・1(3−2)
 3つ目のセクション区切りはないから総ぺージ数が「7」とすると、4(7−3)
となります。
 
WORDVBAのコードで提示しておきますので、
ExcelVBAに適用してください。
 
Dim s As Long
Dim spg()
With ThisDocument
    ReDim spg(1 To .Sections.Count - 1)
    For s = 1 To .Sections.Count - 1
        spg(s) = .Sections(s).Range.Information(wdActiveEndPageNumber)
    Next
    For s = UBound(spg) To LBound(spg) + 1 Step -1
        spg(s) = spg(s) - spg(s - 1)
    Next
End With

トピックに返信