Excel VBAでWordのページ番号のスタイルを一括変更する方法

この記事では、Excel VBAを利用してWordのページ番号のスタイルを一括で変更する手法について詳しく解説します。VBAのコード例とその詳細な解説、さらに応用例を3つ紹介して、どのようにして一連の作業を自動化することができるのかをご紹介します。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本的な手法

Wordのページ番号のスタイルを一括で変更するための基本的なExcel VBAコードを以下に示します。


Sub ChangePageNumberStyleInWord()

    ' Wordアプリケーションを宣言
    Dim wdApp As Object
    Dim wdDoc As Object
    
    ' Wordを起動
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    
    ' Wordドキュメントを開く
    Set wdDoc = wdApp.Documents.Open("C:\path\to\your\document.docx")
    
    ' ページ番号のスタイルを変更
    For Each hdr In wdDoc.Sections(1).Headers
        For Each fld In hdr.Range.Fields
            If fld.Type = 33 Then ' 33 is the code for Page Number Field
                fld.Result.Font.Name = "Arial"
                fld.Result.Font.Size = 12
            End If
        Next fld
    Next hdr
    
    ' 変更を保存
    wdDoc.Save
    
    ' Wordを閉じる
    wdDoc.Close
    wdApp.Quit

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

End Sub

このコードは、Wordのページ番号のスタイルをArialフォントのサイズ12に変更します。具体的な変更を行いたい場合は、`fld.Result.Font.Name`や`fld.Result.Font.Size`の部分を修正してください。

コードの解説

1. 最初に、Wordのアプリケーションとドキュメントのオブジェクトを宣言します。
2. `CreateObject`関数を使用してWordを起動します。
3. 指定したパスのWordドキュメントを開きます。
4. ページ番号フィールドのタイプが33であることを確認し、それに応じてフォント名とサイズを変更します。
5. 変更を保存し、Wordを閉じます。
6. 最後に、使用したオブジェクトを解放します。

応用例

応用1: 複数のWordファイルでの一括変更

複数のWordファイルのページ番号のスタイルを一括で変更したい場合は、以下のコードを使用します。


Sub ChangeMultipleWordFiles()
    Dim wdApp As Object
    Dim wdDoc As Object
    Dim strFile As String
    Dim strFolderPath As String
    strFolderPath = "C:\path\to\your\folder\"
    strFile = Dir(strFolderPath & "*.docx")
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    Do While strFile <> ""
        Set wdDoc = wdApp.Documents.Open(strFolderPath & strFile)
        
        ' ページ番号のスタイルを変更
        For Each hdr In wdDoc.Sections(1).Headers
            For Each fld In hdr.Range.Fields
                If fld.Type = 33 Then
                    fld.Result.Font.Name = "Arial"
                    fld.Result.Font.Size = 12
                End If
            Next fld
        Next hdr
        wdDoc.Save
        wdDoc.Close
        strFile = Dir
    Loop
    wdApp.Quit
    Set wdDoc = Nothing
    Set wdApp = Nothing
End Sub

応用2: 特定のページ番号からスタイルを変更

特定のページ番号からスタイルを変更する場合は、以下の方法を使用できます。


' ... (上のコードの初めの部分)

' ページ番号のスタイルを変更
For Each hdr In wdDoc.Sections(1).Headers
    For Each fld In hdr.Range.Fields
        If fld.Type = 33 And CInt(fld.Result.Text) > 5 Then ' Starting from page 6
            fld.Result.Font.Name = "Arial"
            fld.Result.Font.Size = 12
        End If
    Next fld
Next hdr

' ... (上のコードの残りの部分)

応用3: 異なるスタイルを持つページ番号の変更

例えば、奇数ページのページ番号と偶数ページのページ番号で異なるスタイルを適用する場合は、以下のコードを参照してください。


' ... (上のコードの初めの部分)

' ページ番号のスタイルを変更
For Each hdr In wdDoc.Sections(1).Headers
    For Each fld In hdr.Range.Fields
        If fld.Type = 33 Then
            If CInt(fld.Result.Text) Mod 2 = 0 Then ' Even pages
                fld.Result.Font.Name = "Times New Roman"
                fld.Result.Font.Size = 14
            Else ' Odd pages
                fld.Result.Font.Name = "Arial"
                fld.Result.Font.Size = 12
            End If
        End If
    Next fld


Next hdr

' ... (上のコードの残りの部分)

まとめ

この記事では、Excel VBAを利用してWordのページ番号のスタイルを一括で変更する方法を学びました。基本的な手法から応用例まで、様々なシナリオでの変更方法を網羅しています。これを利用することで、一貫性のある資料作成や大量のドキュメントの整理が効率的に行えるようになります。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次