2017-10-02 17 views
0

いくつかのExcelファイルを調べて、文字列をVBAコードだけでなく任意のデータ接続でも置き換える必要があります。接続のループは簡単ですが、実際のマクロファイルそのものをすばやく実行できるかどうかはわかりません。これを手動で行う必要がある場合、それは問題ありませんが、私はそれを行うための滑らかな方法を望んでいます。思考?Excelファイルのマクロ内の文字列を検索/置換する

+3

これは役立つかもしれません:http://www.cpearson.com/excel/vbe.aspx – Absinthe

+0

それは、私は質問に答えることができました(以下に掲載)。 – legendjr

+0

素敵な仕事、リンクがうれしい – Absinthe

答えて

0

@ Absintheの記事の助けを借りて、問題に答えるためにいくつかのコードをまとめました。

Public Sub MacroStringReplace() 
    Dim x As Variant, SL As Long, EL As Long, SC As Long, EC As Long 
    Dim OLD_STRING As String, NEW_STRING As String, foundString As String 

    OLD_STRING = "Old" 
    NEW_STRING = "New" 

    With Workbooks.Open("C:\docs\foo.xlsm") 
     'Macro Server String Replace 
     For Each x In .VBProject.VBComponents 
      SL = 1: EL = 1: SC = 1: EC = 1    'Default end line and column is 1 
      'The find function here returns Boolean 
      'SL will be the line number where the string was found (if at all) 
      Do Until x.CodeModule.Find(OLD_STRING, SL, EL, SC, EC) = False 
       foundString = x.CodeModule.Lines(SL, 1) 'Get the full line of code 
       x.CodeModule.ReplaceLine SL, Replace(foundString, OLD_STRING, NEW_STRING) 
       SL = 1: EL = 1: SC = 1: EC = 1   'Reset the search numbers 
      Loop 
     Next 
    End With 
End Sub 

これは将来的に他の人に役立つことを願っています。

関連する問題