PDA

View Full Version : [SOLVED:] VBA to modify another VBA



DimGR
05-03-2022, 05:06 AM
Hi,

I am trying to create a VBA that will:
-find and replace a specific string
-in all other VBAs of the same workbook
-any number of time(s), in any part(s) and any VBA(s) it appears

I have found this example, but it replaces the whole line, instead of the desired string only:


Sub replaceConstant()
Dim project As VBIDE.VBProject
For Each project In Application.VBE.VBProjects

Dim codeMod As VBIDE.CodeModule
Dim component As VBIDE.VBComponent

For Each component In project.VBComponents

If component.Name <> "replaceConstant" Then

Set codeMod = component.CodeModule

Dim startline As Long
startline = 1

codeMod.Find Target:="Old_Text", _
startline:=startline, startcolumn:=1, endline:=codeMod.CountOfLines, endcolumn:=1

codeMod.ReplaceLine startline, "New_text"


End If
Next component

Next project
End Sub

Could you please help me?

arnelgp
05-03-2022, 06:14 AM
Sub replaceConstant()Dim project As VBIDE.VBProject
Dim codeMod As VBIDE.CodeModule
Dim component As VBIDE.VBComponent
Dim n As Long, s As String


For Each project In Application.VBE.VBProjects


For Each component In project.VBComponents

If component.Name <> "replaceConstant" Then

Set codeMod = component.CodeModule

With codeMod
For n = 1 To .CountOfLines
s = .Lines(n, 1)
If Len(Trim$(s)) Then
If s Like "*" & Old_Text & "*" Then
s = Replace$(s, Old_Text, New_Text)
.DeleteLines n, 1
.InsertLines n, s
End If
End If
Next
End With
'Dim startline As Long
'startline = 1

'codeMod.Find Target:="Old_Text", _
'startline:=startline, startcolumn:=1, endline:=codeMod.CountOfLines, endcolumn:=1

'codeMod.ReplaceLine startline, "New_text"


End If
Next component


Next project
End Sub

snb
05-03-2022, 07:19 AM
In personal.xlsb:


Sub M_snb()
activesheet.cells.replace inputbox("search"), inputbox("replace by")
End Sub

PS. Your level of VBA expertise doesn't match the code you are working with.

DimGR
05-03-2022, 07:30 AM
Thanks both :)