LoginSignup
0
0

More than 5 years have passed since last update.

選択範囲内で置換するPowerPointマクロ

Last updated at Posted at 2015-05-24

やりたいこと

PowerPointで、全文でなく選択範囲内からテキスト検索し、検索結果を指定のテキストに置換したい。

マクロの作り方

まずは下記のようなユーザーフォームを作る。

myRep.PNG

ユーザーフォームに下記のようなコードを埋め込む。

UserForm1.frm
Option Explicit

Private MyRng As TextRange
Private Found As TextRange

'「置換」ボタンを押したとき
Private Sub btnRep_Click()

    On Error GoTo ErrMessage

    Set MyRng = ActiveWindow.Selection.TextRange
    Set Found = MyRng.Replace(SearchText.text, RepText.text)
    Found.Select

    Exit Sub

ErrMessage:
    MsgBox "検索を行う範囲を選択してください"

End Sub

'「次を置換」ボタンを押したとき
Private Sub btnRepNext_Click()

    On Error GoTo ErrMessage

    With Found
        Set Found = MyRng.Replace(SearchText.text, RepText.text, .Start + .length - 1)
        If Not (Found Is Nothing) Then
            Found.Select
        Else
            MsgBox "見つかりません"
        End If
    End With

    Exit Sub

ErrMessage:
    MsgBox "検索を行う範囲を選択してください"

End Sub

'「すべて置換」ボタンを押したとき
Private Sub btnRepAll_Click()

    On Error GoTo ErrMessage

    Set MyRng = ActiveWindow.Selection.TextRange
    Set Found = MyRng.Replace(SearchText.text, RepText.text)
    Do While Not (Found Is Nothing)
        With Found
            Set Found = MyRng.Replace(SearchText.text, RepText.text, .Start + .length - 1)
        End With
    Loop

    Set MyRng = Nothing
    Set Found = Nothing

    Exit Sub

ErrMessage:
    MsgBox "検索を行う範囲を選択してください"

End Sub

標準モジュールから呼び出せるようにする。

Module1.bas

Option Explicit

Public Sub Sample()

    UserForm1.Show vbModeless

End Sub

これで、選択範囲から指定のテキストを置換できるようになる。

使い方

  1. まずは、置換したい範囲を選択する。

  2. ひとつずつ置換するときは、最初に「置換」ボタンで置換し、2回目以降は「次を置換」ボタンを押す。

  3. すべてを置換するときは、「すべて置換」ボタンを押す。

参考

  1. TextRange.Find メソッド (PowerPoint)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0