
VBAから
・VBAコードを置換
できます!
VBAコード(置換対象のコード)
ここでは例として、
・デスクトップ配下のExcelファイル「sampleMacro.xlsm」の
・モジュール「testModule」に
・Subプロシージャ「sample」
を作成します。


'モジュール「testModule」のSubプロシージャ「sample」
Private Function sample()
MsgBox "こんにちは!"
End Function
VBAコード(置換を実施するコード)
ここでは例として、
・デスクトップ配下のExcelファイル「replaceMacro.xlsm」に
・置換対象のコードを置換するVBAコード
を作成します。

置換する文字列は以下とします。
置換前:こんにちは!
置換後:Hello!置換しました!
Option Explicit
Sub sample()
Dim exceMacrolFilePath As String
Dim wk As Workbook
Dim codeModule As Object
Dim targetModule As String
Dim targetProc As String
Dim srcStr As String
Dim destStr As String
Dim startLine As Double
Dim lineCount As Double
Dim i As Double
'Excelファイルを指定
exceMacrolFilePath = "C:\Users\user\Desktop\sampleMacro.xlsm"
'対象モジュールを指定
targetModule = "testModule"
'対象プロシージャを指定
targetProc = "sample"
'置換前の文字列を指定
srcStr = "こんにちは!"
'置換後の文字列を指定
destStr = "Hello!置換しました!"
'Excelファイルを開く
'・「リンクの更新する/しない」のメッセージを非表示
'・「読み取り専用を推奨する/しない」のメッセージを非表示
Set wk = Workbooks.Open(Filename:=exceMacrolFilePath, UpdateLinks:=0, IgnoreReadOnlyRecommended:=True)
'対象モジュールを取得
Set codeModule = wk.VBProject.VBComponents(targetModule).codeModule
With codeModule
'対象プロシージャの開始Lineと総Line数を取得。2つ目の引数の0はお約束
startLine = .ProcBodyLine(targetProc, 0)
lineCount = .ProcCountLines(targetProc, 0) - 2
'対象プロシージャの中のコードに対して1行ずつ繰り返し
For i = startLine To startLine + lineCount - 1
'置換
.ReplaceLine i, Replace(.Lines(i, 1), srcStr, destStr)
Next i
End With
'Excelファイルを保存して閉じる
wk.Close SaveChanges:=True
'後片付け
Set codeModule = Nothing
End Sub
実行結果
VBAを使用して、VBAコードを置換できました。


参考
上記で使用した以下の詳細は、公式サイトをご確認ください。
●「Workbookオブジェクト」の「VBProject」プロパティ
●「VBProjectオブジェクト」
●「VBComponentsコレクション」
●「codeModuleオブジェクト」