Wordのヘッダー内の文字列をVBAで簡単に置換する方法

パソコンパソコン・スマホ教室
スポンサーリンク

皆さん、こんにちは。今日は、Wordのヘッダー内にある特定の文字列を、VBAを使って簡単に置換する方法をご紹介します。普段、文書のヘッダー部分を手作業で編集している方にとって、作業効率が格段にアップする内容ですので、ぜひ最後までご覧ください。

スポンサーリンク

VBAを使ってWordのヘッダー内の文字列を置換する手順

Wordのイメージ

Wordのイメージ

それでは、具体的な手順を見ていきましょう。

1. 事前準備Wordオブジェクトライブラリの参照設定

まず最初に、VBAからWordを操作するための準備を行います。以下の手順で設定を行ってください。

  1. ExcelのVBAエディタを開きます。
  2. メニューから「ツール」を選択し、「参照設定」をクリックします。
  3. 表示された参照設定の一覧から「Microsoft Word XX.X Object Library」にチェックを入れ、「OK」をクリックします。

この設定を行うことで、VBAからWordの機能を利用できるようになります。

2. VBAコードの作成ヘッダー内の文字列を置換する

次に、実際にヘッダー内の文字列を置換するVBAコードを作成します。以下のコードを参考にしてください。

vba
Public Sub ReplaceInHeaders()

'--- Wordのアプリケーションオブジェクトを作成 ---'
Dim objWord As Word.Application
Set objWord = CreateObject("Word.Application")
objWord.Visible = True

'--- ドキュメントオブジェクトを開く ---'
Dim objDoc As Word.Document
Set objDoc = objWord.Documents.Open("[ワードファイルのパス]")

'--- 置換前の文字列 ---'
Dim strTarget As String
strTarget = "[置換前の文字列]"

'--- 置換後の文字列 ---'
Dim strReplaced As String
strReplaced = "[置換後の文字列]"

'--- セクション・ヘッダー数を格納する変数 ---'
Dim i_n As Long
Dim j_n As Long

'--- 全てのセクション・ヘッダーでループ ---'
Dim objFind As Word.Find
Dim i As Long
Dim j As Long
i_n = objDoc.Sections.Count
For i = 1 To i_n
j_n = objDoc.Sections(i).Headers.Count
For j = 1 To j_n

'--- 各セクション・ヘッダーで置換を実行 ---'
Set objFind = objDoc.Sections(i).Headers(j).Range.Find

objFind.ClearFormatting
objFind.Text = strTarget
objFind.Replacement.ClearFormatting
objFind.Replacement.Text = strReplaced
Call objFind.Execute(Replace:=Word.wdReplaceAll)
Next j

Next i

'--- ドキュメントを保存して閉じる ---'
objDoc.Save
objDoc.Close

'--- Wordを終了する ---'
objWord.Quit

End Sub

このコードでは、指定したWordファイルを開き、全てのセクションの全てのヘッダー内で特定の文字列を別の文字列に置換しています。具体的な使い方は以下の通りです。

  1. `[ワードファイルのパス]`に、操作したいWordファイルのフルパスを入力します。
  2. `[置換前の文字列]`に、ヘッダー内で置換したい文字列を入力します。
  3. `[置換後の文字列]`に、置換後の文字列を入力します。

これらを設定した上で、マクロを実行すると、指定した文字列の置換が自動的に行われます。

よくある質問や疑問

Q1. このマクロはフッター内の文字列も置換できますか?

はい、可能です。コード内の`Headers`を`Footers`に置き換えることで、フッター内の文字列を置換することができます。例えば、以下のように変更します。

vba
'--- 全てのセクション・フッターでループ ---'
For i = 1 To i_n
j_n = objDoc.Sections(i).Footers.Count
For j = 1 To j_n

'--- 各セクション・フッターで置換を実行 ---'
Set objFind = objDoc.Sections(i).Footers(j).Range.Find

objFind.ClearFormatting
objFind.Text = strTarget
objFind.Replacement.ClearFormatting
objFind.Replacement.Text = strReplaced
Call objFind.Execute(Replace:=Word.wdReplaceAll)
Next j
Next i

このように変更することで、フッター内の文字列を置換することができます。

Q2. 複数のWordファイルに対してこのマクロを適用することは可能ですか?

はい、可能です。フォルダ内の全てのWordファイルを順次開いて、同じ置換処理を行うマクロを作成することで対応できます。ただし、その場合は、ファイル操作やエラーハンドリングなど、追加のコードが必要となります。

今すぐ解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

今回は、VBAを使ってWordのヘッダー内の文字列を置換する方法をご紹介しました。手作業で行っていた煩雑な作業も、マクロを活用することで効率的に行うことができます。ぜひ、日々の業務に取り入れてみてください。他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。

コメント

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