Word VBAでフォルダ内の全てのドキュメントのフォントの種類を変更する


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Word VBAで複数のドキュメントに一括処理をする方法についてのシリーズです。

前回の記事はこちらでした。

Word VBAでFor Each~Next文を使ってフォルダ内のドキュメント全てを操作をする方法
複数のWordドキュメントについて一括で処理をするWordマクロの作り方についてお伝えしています。今回はWord VBAでFor Each文を使ってフォルダ内のドキュメント全てを順番に開いて操作をする方法です。

For Each文とFileSystemオブジェクトを使って、フォルダ内のドキュメントを操作する方法でしたね。

さて、いよいよその応用として、実際にいろいろな一括処理をしていきたいと思います。

今回は手始めとして、Word VBAでフォルダ内の全てのドキュメントのフォントを変更する方法です。

では、行ってみましょう!

スポンサーリンク

前回のおさらい

前回作成したプロシージャはこちらです。

Sub openDocs()

Dim objFso As Object
Set objFso = CreateObject("Scripting.FileSystemObject")

Dim strPath As String
strPath = ThisDocument.Path & "\原稿\"

Dim obj As Object
For Each obj In objFso.getfolder(strPath).Files

    With Documents.Open(strPath & "\" & obj.Name)
        Debug.Print .Name
        .Close
    End With

Next obj

Set objFso = Nothing

End Sub

FileSystemオブジェクトを使って、現在マクロを記述しているドキュメントファイルと同階層にある「原稿」というフォルダ内にアクセスしています。

10~17行目のFor Each文で、そのフォルダ内のドキュメントファイル一つ一つについて繰り返しを行っています。

For Each文内の13行目の「Debug.Print」の位置の処理を変更することで、様々な一括操作ができるようになるという寸法ですね。

文書全体のフォント種類を変更する方法

今回は、ドキュメント全体のフォントの種類を変更していきたいと思います。

まずは、ドキュメント単体についてやってみましょう。

オブジェクトブラウザーでFontプロパティを持つクラスを調べる

さて、フォントを変更するのであれば、Fontオブジェクトを使うよということをお伝えしていました。

Word VBAで選択範囲のフォント設定を変更する方法とそのプロパティまとめ
Word VBAで色々な検索&置換をする方法についてお伝えしています。今回はWord VBAでFontオブジェクトを使ってフォントの設定を変更する方法と、そのプロパティを一覧で一挙にまとめました。

ただ、こちらの記事ではSelectionオブジェクトつまり選択範囲についてのFontオブジェクトだったんですよね。今回は、ドキュメント全体を対象としたいので、どうすればよいと思いますか?

VBEで F2 キーを押してオブジェクトブラウザーを開きましょう。そこで「font」と入力して Enter すると、「Font」をメンバーに持つクラスがバババって出てきます。

VBEのオブジェクトブラウザー

いっぱいありますね~。

答えを言っちゃいますと、今回はRangeオブジェクトを使います!

Fontプロパティで…

Rangeオブジェクト.Font

とすることで、指定した範囲のFontオブジェクトを取得することができます。

Contentプロパティでドキュメント全体の範囲を取得

Documentオブジェクトに対するContentプロパティで、ドキュメント全体の範囲を取得することができるんです。

Documentオブジェクト.Content

プロパティ名はContentなのですが、これで指定したDocumentオブジェクト全体の範囲をRangeオブジェクトとして取得することができます。

ドキュメント全体のフォント種類を変更する

例えば、以下のような文書があるとします。

Wordのフォント変更前のドキュメント

VBEを開いて、イミディエイトウィンドウに以下入力して Enter してみてください。

ThisDocument.Content.Font.Name = "Meiryo UI"

Name・・・?と思うかもしれませんが、これは「フォント名」です。フォント種類を変更するには、FontオブジェクトのNameプロパティを変更すればよいのです。

Fontオブジェクト.Name = フォント名

ですから、上記の命令を実行すると以下のように文書全体が「Meiryo UI」に変更されるわけです。

Word VBAで文書全体のフォント種類を変更する

フォルダ内のドキュメントすべてのフォント種類を変更する

以上を踏まえまして、フォルダ内の全てのドキュメントについてフォント種類を変更するプロシージャを作りました。

Sub openDocs()

Dim objFso As Object
Set objFso = CreateObject("Scripting.FileSystemObject")

Dim strPath As String
strPath = ThisDocument.Path & "\原稿\"

Dim obj As Object
For Each obj In objFso.getfolder(strPath).Files

    With Documents.Open(strPath & "\" & obj.Name)
        .Content.Font.Name = "Meiryo UI"
    End With

Next obj

Set objFso = Nothing

End Sub

13行目に、今回登場したContentプロパティ、そしてそれに対するFontオブジェクトの操作を入れてみました。

実行してみると

Word VBAでフォルダ内の全てのドキュメントについてフォント種類を変更

はい、全部開いて、フォント種類も「Meiryo UI」に変更されましたね。

ただ、全部開きっぱなしではありますが…

まとめ

Word VBAでフォルダ内のドキュメントファイル全てについてフォントの種類を変更する方法についてお伝えしました。

  • Contentプロパティでドキュメント全体の範囲を取得する
  • 範囲つまりRangeオブジェクトに対してフォント設定を変更する

このあたりがポイントでした。

さて、全部のドキュメントが開きっぱなし…だって、変更を保存しないと閉じられないじゃないですか。

ということで、次回はWordドキュメントを保存する方法です。

Word VBAでドキュメントファイルを上書き保存する2つの方法
Word VBAで複数のドキュメントを一括処理するマクロの作り方をお伝えしています。今回はWord VBAでドキュメントファイルをSaveメソッドとCloseメソッドを使って上書き保存する方法です。

お楽しみに!

連載目次:Word VBAでフォルダ内のドキュメントを一括操作する

Wordで複数ドキュメントファイルに一括で同じ操作をしたいときがあります。そんな時は、VBAを使えば便利!マクロさえ仕込んでおけば、フォルダの中のドキュメントについてPCが自動で勝手に処理をしてくれます。そんなWord文書の一括操作のテクニックについてお伝えしていきます。
  1. Word VBAによるドキュメント一括処理の第一歩!文書ファイルを開く方法と閉じる方法
  2. Word VBAでFor Each~Next文を使ってフォルダ内のドキュメント全てを操作をする方法
  3. Word VBAでフォルダ内の全てのドキュメントのフォントの種類を変更する
  4. Word VBAでドキュメントファイルを上書き保存する2つの方法
  5. Word VBAで複数のドキュメントファイルを一括処理して名前を付けて保存する方法

タイトルとURLをコピーしました