次の方法で共有

Word2007のVBAでページ番号の情報を判定したい

Anonymous
2011-08-25T18:17:22+00:00

Word2007のVBAでページ番号情報を自動で判定したいと思っています。

具体的には、下記の情報を取得できません。

  1. ページ番号が表示されているか
  2. フィールドコードの内容

よろしくお願いします。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2011-08-26T01:07:27+00:00

こんにちは。

> 1. ページ番号が表示されているか

2003で確認したところ、ページ番号が表示されているかどうかを直接取得するプロパティやメソッドが無さそうでしたので、下記のようにPageNumbersコレクションのCountプロパティで判断してみてはいかがでしょうか?

Option Explicit

Public Sub Sample()

  If ChkPageNumber Then

    MsgBox "ヘッダー・フッター上にページ番号があります。"

  Else

    MsgBox "ヘッダー・フッター上にページ番号がありません。"

  End If

End Sub

Public Function ChkPageNumber() As Boolean

  Dim sec As Word.Section

  Dim hed As Word.HeaderFooter

  Dim fot As Word.HeaderFooter

  Dim ret As Boolean

  ret = False '初期化

  For Each sec In ActiveDocument.Sections

    For Each hed In sec.Headers

      If hed.Exists Then

        If hed.PageNumbers.Count > 0 Then

          ret = True

          GoTo BottomRow

        End If

      End If

    Next

    For Each fot In sec.Footers

      If fot.Exists Then

        If fot.PageNumbers.Count > 0 Then

          ret = True

          GoTo BottomRow

        End If

      End If

    Next

  Next

BottomRow:

  ChkPageNumber = ret

End Function

> 2. フィールドコードの内容

内容がどういったものを指すのかが分からないのですが、FieldオブジェクトのResultプロパティなりCodeプロパティなりで取得することができるかと思います。

Public Sub Sample2()

  If ActiveDocument.Fields.Count > 0 Then

    Debug.Print ActiveDocument.Fields(1).Result 'フィールドの結果

    Debug.Print ActiveDocument.Fields(1).Code 'フィールドコード

  End If

End Sub

この回答は役に立ちましたか?

0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2011-08-26T02:46:41+00:00

    きぬあさ様

    ご回答ありがとうございました。

    実は、弊社では社内標準のテンプレートファイルを使用しているのですが、

    ページ番号の表示はWord標準の機能ではありませんでした。

    同じようなスクリプトを作成していましたが、ページ番号の表示が判断できませんでした。

    さぬあさ様の投稿で、上記の事実が判明し、問題解決の糸口が見つかりました。

    弊社の方法では、フッダーにフィールドコードを埋め込んだテキストボックスを挿入していました。

    たしか、縦横混在の複数セクションのファイルでも、必ず短辺にページ番号を表示させるためだったと思います。

    ありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません