Word VBAで同じ処理を繰り返し実行する方法:初心者向け解説

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

Wordでの作業を効率化するために、同じ処理を繰り返し実行する方法を学んでみましょう。例えば、文書内の特定の文字列を一括で置換したり、同じ書式を複数の段落に適用したりする際に、VBA(Visual Basic for Applications)を活用することで、手作業を減らし、作業時間を大幅に短縮できます。

スポンサーリンク

繰り返し処理の基本For…Nextステートメント

Wordのイメージ

Wordのイメージ

For…Nextステートメントとは?

For…Nextステートメントは、指定した回数だけ処理を繰り返すためのVBAの基本的な構文です。例えば、1から10までの数字を順番に表示する場合、以下のように記述します。

For i = 1 To 10
MsgBox i
Next i

このコードを実行すると、1から10までの数字が順番に表示されるメッセージボックスが表示されます。

Stepキーワードの活用

Stepキーワードを使用すると、カウンターの増加幅を変更できます。例えば、2ずつ増加させる場合は以下のように記述します。

For i = 1 To 10 Step 2
MsgBox i
Next i

このコードを実行すると、1, 3, 5, 7, 9の数字が順番に表示されます。

逆順に繰り返す方法

Stepキーワードを負の値に設定することで、カウンターを減少させることも可能です。例えば、10から1までの数字を表示する場合は以下のように記述します。

For i = 10 To 1 Step -1
MsgBox i
Next i

このコードを実行すると、10から1までの数字が順番に表示されます。

For Each…Nextステートメントの活用

For Each…Nextステートメントとは?

For Each…Nextステートメントは、コレクションや配列の各要素に対して処理を繰り返すための構文です。例えば、文書内のすべての段落に対して処理を行う場合は以下のように記述します。

Dim para As Paragraph
For Each para In ActiveDocument.Paragraphs
' 各段落に対する処理
Next para

このコードを実行すると、アクティブな文書内のすべての段落に対して処理が行われます。

特定の条件で処理をスキップする方法

If…Thenステートメントと組み合わせることで、特定の条件を満たす場合に処理をスキップすることができます。例えば、段落の文字数が50文字未満の場合は処理をスキップする場合は以下のように記述します。

Dim para As Paragraph
For Each para In ActiveDocument.Paragraphs
If Len(para.Range.Text) < 50 Then ' 50文字未満の段落はスキップ GoTo SkipParagraph End If ' それ以外の段落に対する処理 SkipParagraph: Next para

このコードを実行すると、50文字未満の段落は処理をスキップし、それ以外の段落に対して処理が行われます。

エラー処理とループの制御

エラー処理の基本On Errorステートメント

VBAでは、処理中にエラーが発生する可能性があります。On Errorステートメントを使用すると、エラーが発生した際の処理を指定できます。例えば、エラーが発生した場合にメッセージを表示する場合は以下のように記述します。

On Error GoTo ErrorHandler
' エラーが発生する可能性のある処理
Exit Sub

ErrorHandler:
MsgBox "エラーが発生しました。"

このコードを実行すると、エラーが発生した場合に「エラーが発生しました。」というメッセージが表示されます。

ループを途中で終了する方法Exit Forステートメント

ループ内で特定の条件を満たした場合に、ループを途中で終了するにはExit Forステートメントを使用します。例えば、段落の文字数が100文字を超えた場合にループを終了する場合は以下のように記述します。

Dim para As Paragraph
For Each para In ActiveDocument.Paragraphs
If Len(para.Range.Text) > 100 Then
Exit For
End If
' それ以外の段落に対する処理
Next para

このコードを実行すると、100文字を超える段落が見つかった時点でループが終了します。

実践例文書内の特定の文字列を置換するマクロ

実際に、文書内のすべての「旧会社名」を「新会社名」に置換するマクロを作成してみましょう。

Sub ReplaceCompanyName()
Dim para As Paragraph
For Each para In ActiveDocument.Paragraphs
para.Range.Find.Execute FindText:="旧会社名", ReplaceWith:="新会社名", Replace:=wdReplaceAll
Next para
End Sub

このマクロを実行すると、アクティブな文書内のすべての段落に対して「旧会社名」が「新会社名」に置換されます。

よくある質問や疑問

Q1: VBAのコードをどこで実行できますか?

VBAのコードは、Wordの「開発」タブから「Visual Basic」を選択し、VBE(Visual Basic Editor)を開くことで実行できます。VBE内で新しいモジュールを作成し、コードを貼り付けて実行してください。

Q2: ループ内で処理をスキップする方法はありますか?

はい、If...ThenステートメントとGoToステートメントを組み合わせることで、特定の条件を満たす場合に処理をスキップすることができます。

Q3: エラーが発生した場合に処理を続行する方法はありますか?

はい、On ErrorステートメントとResume Nextステートメントを組み合わせることで、エラーが発生した場合でも処理を続行することができます。

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

LINE公式

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

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

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

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

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

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

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

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

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

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

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

相談しに行く

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

まとめ

Word VBAを活用することで、同じ処理を繰り返し実行する作業を効率化できます。For...NextステートメントやFor Each...Nextステートメントを使いこなすことで、文書内の特定の処理を自動化できます。エラー処理やループ制御を適切に行うことで、より堅牢なマクロを作成することができます。

他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。

コメント

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