オートシェイプ内のテキストを置換するマクロ
作ってみた。
テストは全然してないけど、現在作成中のドキュメントでは、
うまく動いたので自分的にはこれでオーケーです。
'mdlShapes.bas Option Explicit Public SearchWord As String Public ReplaceWord As String Public Sub ReplaceShapeText() Dim sh As Object '対象シート Dim s As Shape '対象オートシェイプ Dim t As String '対象テキスト Call frmReplace.Show Set sh = Application.ActiveSheet On Error Resume Next For Each s In sh.Shapes t = s.TextFrame.Characters.Text If Err Then Call Err.Clear Else s.TextFrame.Characters.Text = Replace$(t, SearchWord, ReplaceWord) End If Next s Set sh = Nothing End Sub
'frmReplace.frm Option Explicit Private Sub cmdAllReplace_Click() SearchWord = Me.txtSearch.Text ReplaceWord = Me.txtReplace.Text Call Unload(Me) End Sub
で、frmReplace.frm のデザインは下のような感じです。
検索機能も作ろうと思ったけど、めんどくさいのでやめました。
置換の対象となるものは、選択しているシートのオートシェイプすべてです。
本当は、選択しているオートシェイプだけを対象にしたかったけど
どうすればいいか判らなかったです。。。