当サイトの記事にはプロモーションが含まれています。

PowerPointでVBAを使って文字列を一括置換する方法【初心者向けガイド】

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

PowerPointのプレゼンテーションで、複数のスライドにわたって同じ文字列を一度に置き換えたいと思ったことはありませんか?手作業で一つ一つ修正するのは大変ですが、VBA(Visual Basic for Applications)を使えば、簡単に自動化できます。今回は、初心者の方でもわかりやすいように、VBAを使った文字列の一括置換方法をご紹介します。

スポンサーリンク

VBAとは?PowerPointで何ができるのか

PowerPointのイメージ

PowerPointのイメージ

VBAは、Microsoft Office製品に組み込まれているプログラミング言語で、日常的な作業を自動化したり、機能を拡張したりすることができます。例えば、PowerPointでは以下のような操作が可能です

ここがポイント!

  • 複数のスライドにわたる文字列の検索と置換
  • 特定の条件に一致するテキストの強調表示やフォント変更
  • スライドのデザインやレイアウトの自動適用

これらの操作をVBAを使って自動化することで、作業効率が大幅に向上します。

VBAで文字列を一括置換する基本的なコード

まずは、PowerPointでVBAを使って文字列を一括置換する基本的なコードをご紹介します。以下の手順で進めていきましょう。

  1. PowerPointを開き、Alt+F11キーを押してVBAエディタを起動します。
  2. 「挿入」メニューから「標準モジュール」を選択します。
  3. 以下のコードをコピーして、モジュールに貼り付けます。
Sub ReplaceTextInPresentation()
Dim sld As slide
Dim shp As shape
Dim txtRng As textRange
Dim tmpRng As textRange
Dim findText As String
Dim replaceText As String

findText = "置換前の文字列"
replaceText = "置換後の文字列"

For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.HasTextFrame Then
Set txtRng = shp.TextFrame.textRange
Set tmpRng = txtRng.Replace(FindWhat:=findText, ReplaceWhat:=replaceText, WholeWords:=True)
Do While Not tmpRng Is Nothing
Set txtRng = txtRng.Characters(tmpRng.Start + tmpRng.Length, txtRng.Length)
Set tmpRng = txtRng.Replace(FindWhat:=findText, ReplaceWhat:=replaceText, WholeWords:=True)
Loop
End If
Next shp
Next sld
End Sub

このコードは、プレゼンテーション内のすべてのスライドとその中のすべてのシェイプをチェックし、指定した文字列を置換します。

よくある質問とその回答

Q1: VBAを使うのは難しそうですが、初心者でもできますか?

はい、できます。VBAは初心者でも理解しやすい構文を持っており、上記のコードをそのままコピー&ペーストするだけで動作します。コードの意味や動作について不明な点があれば、お気軽にご質問ください。

Q2: 置換対象の文字列が複数ある場合、どうすればよいですか?

複数の文字列を一度に置換する場合、以下のようにコードを変更することで対応できます。

Sub ReplaceMultipleTexts()
Dim sld As slide
Dim shp As shape
Dim txtRng As textRange
Dim tmpRng As textRange
Dim replacements As Variant
Dim i As Integer

replacements = Array(Array("置換前の文字列1", "置換後の文字列1"), _
Array("置換前の文字列2", "置換後の文字列2"))

For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.HasTextFrame Then
Set txtRng = shp.TextFrame.textRange
For i = LBound(replacements) To UBound(replacements)
Set tmpRng = txtRng.Replace(FindWhat:=replacements(i)(0), _
ReplaceWhat:=replacements(i)(1), _
WholeWords:=True)
Do While Not tmpRng Is Nothing
Set txtRng = txtRng.Characters(tmpRng.Start + tmpRng.Length, txtRng.Length)
Set tmpRng = txtRng.Replace(FindWhat:=replacements(i)(0), _
ReplaceWhat:=replacements(i)(1), _
WholeWords:=True)
Loop
Next i
End If
Next shp
Next sld
End Sub

このコードでは、置換前と置換後の文字列のペアを配列として定義し、順番に置換を行っています。

Q3: VBAを使う際に注意すべき点はありますか?

VBAを使用する際には、以下の点に注意してください

  • マクロのセキュリティ設定を確認し、必要に応じて設定を変更してください。
  • VBAコードを実行する前に、プレゼンテーションのバックアップを取っておくことをおすすめします。
  • コードを変更する際は、変更箇所が他の部分に影響を与えないか確認してください。

まとめと次のステップ

VBAを使ってPowerPointの文字列を一括置換する方法をご紹介しました。これにより、手作業での修正作業を大幅に削減できます。次のステップとして、以下のことに挑戦してみてください

  • 特定のスライドやシェイプのみを対象にした置換処理の実装
  • ユーザー入力を受け付けるダイアログボックスの作成
  • 置換結果のログをファイルに出力する機能の追加

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

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

相談窓口(問い合わせ/LINE等)を設け、記事で解決しないケースも個別にサポートしていますので「パソコンが急に動かなくなった」「スマホの設定がわからない」などの悩みは一人で抱え込まず、お気軽にご相談ください。

【お問い合わせは下記URLから】
https://m32006400n.xsrv.jp/inquiry-form/

【公式LINEは下記URLから】
https://lin.ee/t8TDjcj

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

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