【VBA】指定モジュール/指定プロシージャ内のVBAコードを置換する

実行前

'「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
タイトルとURLをコピーしました