実行前
'「Module1」の「Function1」
Private Function Function1()
MsgBox "aiueo"
End Function
サンプルプログラム
Sub sample()
Dim wk As Workbook
Dim codeModule As Object
Dim i As Double
Dim startLine As Double
Dim lineCount As Double
'Excelファイルを開く ※「リンクの更新」はしないで開く
Set wk = Workbooks.Open(Filename:="C:\Users\user\Desktop\temp\sampleVBA.xlsm", _
UpdateLinks:=0)
'対象モジュールを指定
Set codeModule = wk.VBProject.VBComponents("Module1").codeModule
With codeModule
'対象プロシージャの開始Lineと総Line数を取得。2つ目の引数の0はお約束
startLine = .ProcBodyLine("Function1", 0)
lineCount = .ProcCountLines("Function1", 0) - 2
For i = startLine To startLine + lineCount - 1
'「aiueo」を「あいうえお」へ置換
.ReplaceLine i, Replace(.Lines(i, 1), "aiueo", "あいうえお")
Next i
End With
'Excelファイルを保存して閉じる
wk.Close SaveChanges:=True
'後片付け
Set codeModule = Nothing
Set wk = Nothing
End Sub
実行結果
'「Module1」の「Function1」
Private Function Function1()
MsgBox "あいうえお"
End Function