Excel VBAを使ってWord文書のフォントを一括で統一する方法

ExcelのVBA機能を活用して、Word文書のフォントを簡単に一括で統一する方法について解説します。VBAのコード例とそれに関する詳しい解説、そしてさらなる応用例を通して、VBAの可能性を最大限に引き出す方法を学びましょう。

目次

Excel VBAの基本

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

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

VBAを用いたWord文書のフォント統一の基礎

Excel VBAを使ってWord文書を操作するには、Wordオブジェクトを活用します。具体的なコードを見てみましょう。


Sub UnifyFontInWordDoc()
    Dim WordApp As Object
    Dim WordDoc As Object
    
    ' Wordアプリケーションを開始
    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = True
    
    ' Word文書を開く
    Set WordDoc = WordApp.Documents.Open("C:\path\to\your\document.docx")
    
    ' フォントを一括で統一
    With WordDoc.Content.Font
        .Name = "Arial"
        .Size = 12
    End With
    
    ' Word文書を保存して閉じる
    WordDoc.Save
    WordDoc.Close
    
    ' Wordアプリケーションを閉じる
    WordApp.Quit
End Sub

このコードでは、まずWordアプリケーションを起動し、指定されたWord文書を開きます。そして、文書全体のフォントをArial、サイズを12に統一します。最後に変更を保存して文書とアプリケーションを閉じます。

応用例1: 複数のWord文書のフォントを一括で統一

一つのWord文書だけでなく、複数のWord文書のフォントを一括で統一したい場合は、次のようなコードを使用します。


Sub UnifyFontInMultipleWordDocs()
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim folderPath As String
    Dim fileName As String
    ' Wordアプリケーションを開始
    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = False
    
    folderPath = "C:\path\to\your\documents\"
    fileName = Dir(folderPath & "*.docx")
    Do While fileName <> ""
        ' Word文書を開く
        Set WordDoc = WordApp.Documents.Open(folderPath & fileName)
        ' フォントを一括で統一
        With WordDoc.Content.Font
            .Name = "Arial"
            .Size = 12
        End With
        ' Word文書を保存して閉じる
        WordDoc.Save
        WordDoc.Close
        fileName = Dir
    Loop
    ' Wordアプリケーションを閉じる
    WordApp.Quit
End Sub

このコードは、指定したフォルダ内のすべてのWord文書に対してフォントを一括で統一します。

応用例2: フォントの変更を確認ダイアログで確認する

ユーザーにフォントの変更を確認するダイアログを表示して、確認を取る方法です。


Sub UnifyFontWithConfirmation()
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim msgResponse As Integer

    ' Wordアプリケーションを開始
    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = True

    ' Word文書を開く
    Set WordDoc = WordApp.Documents.Open("C:\path\to\your\document.docx")

    msgResponse = MsgBox("フォントをArial、サイズを12に統一しますか?", vbYesNo)

    If msgResponse = vbYes Then
        ' フォントを一括で統一
        With WordDoc.Content.Font
            .Name = "Arial"
            .Size = 12
        End With

        ' Word文書を保存して閉じる
        WordDoc.Save
        WordDoc.Close
    Else
        WordDoc.Close
    End If

    ' Wordアプリケーションを閉じる
    WordApp.Quit
End Sub

応用例3: 特定のスタイルのテキストだけフォントを変更

例えば、見出しのみ、または特定のスタイルが適用されたテキストのみのフォントを変更する方法です。


Sub ChangeFontForSpecificStyle()
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim para As Object

    ' Wordアプリケーションを開始
    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = True

    ' Word文書を開く
    Set WordDoc = WordApp.Documents.Open("C:\path\to\your\document.docx")

    For Each para In WordDoc.Paragraphs
        If para.Style = "Heading 1" Then
            With para.Range.Font
                .Name = "Arial"
                .Size = 14
                .Bold = True
            End With
        End If
    Next para

    ' Word文書を保存して閉じる
    WordDoc.Save
    WordDoc.Close

    ' Wordアプリケーションを閉じる
    WordApp.Quit
End Sub

この

コードは、Word文書内の「Heading 1」スタイルが適用されたテキストに対してのみ、フォントをArial、サイズを14、太字に変更します。

まとめ

ExcelのVBAを使うことで、Word文書のフォントの一括変更はもちろん、さまざまな応用が可能です。今回紹介した例を基に、より効率的な文書作成・編集を目指しましょう。

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

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

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

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

コメント

コメントする

目次