PowerPointのテキストボックスのテキストを入れ替えるマクロ(VBA)
Sub 文字列の差し替え()
'作業用動的配列
Dim moji() As TextRange
'元文字列リスト
mojilist1 = Array("文字1", "文字2", "文字3")
'差し替え用文字列リスト
mojilist2 = Array("差替1", "差替2", "差替3")
i = 0
'元文字列サーチループ
For Each ml In mojilist1
'アクティブなスライドにあるシェイプをサーチ
For Each sh In ActiveWindow.Selection.SlideRange.Shapes
'見つかったシェイプはテキストボックスか?
If sh.Type = msoTextBox Then
'テキストの内容は元文字列と一致するか?
If ml = sh.TextFrame.TextRange.Text Then
'作業用配列要素を追加
ReDim Preserve moji(i)
'見つかったオブジェクトを格納
moji(i) = sh.TextFrame.TextRange
i = i + 1
End If
End If
Next sh
Next ml
'文字列が見つからなかった場合の処理
'エラーをエスケープ
On Error Resume Next
'作業用配列の要素数を調べる
ubmoji = UBound(moji)
'エラー番号とメッセージを退避
errNumber = Err.Number
errDescription = Err.Description
'エラーを戻す
On Error GoTo 0
'エラー処理
If errNumber <> 0 Then
'エラーNo9(配列がない)か?
If errNumber = 9 Then
MsgBox("文字列が見つかりません")
Else
'それ以外のエラー
MsgBox(errNumber & " : " & errDescription)
End If
Exit Sub
End If
'文字列差し替え
For i = 0 To ubmoji
'オブジェクトのテキストメンバに差し替え用文字列を代入
moji(i).Text = mojilist2(i)
Next i
End Sub
参考:
不要なものを削除するマクロ
http://msdn.microsoft.com/ja-jp/library/office/ee814734.aspx
アクティブスライド上のすべての文字列を取得するマクロ
https://www.relief.jp/docs/017829.html
On Error Resume Nextの正しい使い方
http://scripting.cocolog-nifty.com/blog/2006/12/on_error_resume_d841.html

コメント