programmatically open VBE and go to a specified procedure in target module?

  • Thread starter DataFreakFromUtah
  • Start date
D

DataFreakFromUtah

Hello all,

Win 2000
Excel 2000

I am wondering if there is a way to programmatically open the VBE and
go to a specific
procedure or macro in the target module (in this example: basModule1).
I have the code to go
to the target module, but I can't seem
to figure out a way for the procedure to open at the target procedure
or macro.
I spent some time looking at the object model and searching the
microsoft.public.excel.programming newsgroup, no luck.
Might anyone out there have an answer?
Thank you in advance for any information you may provide.
Cheers,
Tom


Sub OpenVBE()
' Open the Visual Basic Editor Programmatically

Application.VBE.MainWindow.Visible = True
'The next line of code goes to a specified module
ThisWorkbook.VBProject.VBComponents("basModule1").Activate

End Sub
 
J

Jake Marx

Hi DataFreakFromUtah,

I'm not well-versed with the VBE objects, but this seems to work:

Sub OpenVBE()
Dim lStartLine As Long

ThisWorkbook.VBProject.VBComponents("basModule1").Activate

With Application.VBE.ActiveCodePane.CodeModule
lStartLine = .ProcStartLine("test2", 0)
.CodePane.SetSelection lStartLine, 1, lStartLine, 1
End With
End Sub


Just change the "test2" to the name of your procedure.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]
 
D

DataFreakFromUtah

Thanks Jake!
I was able to make the procedure work by adding one line of code to
it:
Application.VBE.MainWindow.Visible = True
Apparently the procedure wouldn't work if the VBE wasn't all ready
open.
I am in Win 2000, Excel 2000, with VBE>Tools>References>Microsoft VBA
Extensibility 5.3 checked.
The procedure that worked for me is below:



Sub OpenVBEGoToSpecificMacro()

Dim lStartLine As Long
Application.VBE.MainWindow.Visible = True
ThisWorkbook.VBProject.VBComponents("ModuleNameHere").Activate

With Application.VBE.ActiveCodePane.CodeModule
lStartLine = .ProcStartLine("VBAProcedureNameHere", 0)
.CodePane.SetSelection lStartLine, 1, lStartLine, 1
End With
End Sub






Jake Marx said:
Hi DataFreakFromUtah,

I'm not well-versed with the VBE objects, but this seems to work:

Sub OpenVBE()
Dim lStartLine As Long

ThisWorkbook.VBProject.VBComponents("basModule1").Activate

With Application.VBE.ActiveCodePane.CodeModule
lStartLine = .ProcStartLine("test2", 0)
.CodePane.SetSelection lStartLine, 1, lStartLine, 1
End With
End Sub


Just change the "test2" to the name of your procedure.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]

Hello all,

Win 2000
Excel 2000

I am wondering if there is a way to programmatically open the VBE and
go to a specific
procedure or macro in the target module (in this example: basModule1).
I have the code to go
to the target module, but I can't seem
to figure out a way for the procedure to open at the target procedure
or macro.
I spent some time looking at the object model and searching the
microsoft.public.excel.programming newsgroup, no luck.
Might anyone out there have an answer?
Thank you in advance for any information you may provide.
Cheers,
Tom


Sub OpenVBE()
' Open the Visual Basic Editor Programmatically

Application.VBE.MainWindow.Visible = True
'The next line of code goes to a specified module
ThisWorkbook.VBProject.VBComponents("basModule1").Activate

End Sub
 
P

Peter T

Have you tried, simply:

Sub Test()
Application.Goto "MyRoutine"
End Sub

Regards,
Peter
-----Original Message-----
Thanks Jake!
I was able to make the procedure work by adding one line of code to
it:
Application.VBE.MainWindow.Visible = True
Apparently the procedure wouldn't work if the VBE wasn't all ready
open.
I am in Win 2000, Excel 2000, with
VBE>Tools>References>Microsoft VBA
Extensibility 5.3 checked.
The procedure that worked for me is below:



Sub OpenVBEGoToSpecificMacro()

Dim lStartLine As Long
Application.VBE.MainWindow.Visible = True
ThisWorkbook.VBProject.VBComponents ("ModuleNameHere").Activate

With Application.VBE.ActiveCodePane.CodeModule
lStartLine = .ProcStartLine ("VBAProcedureNameHere", 0)
.CodePane.SetSelection lStartLine, 1, lStartLine, 1
End With
End Sub






"Jake Marx" <[email protected]> wrote in message
Hi DataFreakFromUtah,

I'm not well-versed with the VBE objects, but this seems to work:

Sub OpenVBE()
Dim lStartLine As Long

ThisWorkbook.VBProject.VBComponents ("basModule1").Activate

With Application.VBE.ActiveCodePane.CodeModule
lStartLine = .ProcStartLine("test2", 0)
.CodePane.SetSelection lStartLine, 1, lStartLine, 1
End With
End Sub


Just change the "test2" to the name of your procedure.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]

Hello all,

Win 2000
Excel 2000

I am wondering if there is a way to programmatically open the VBE and
go to a specific
procedure or macro in the target module (in this example: basModule1).
I have the code to go
to the target module, but I can't seem
to figure out a way for the procedure to open at the target procedure
or macro.
I spent some time looking at the object model and searching the
microsoft.public.excel.programming newsgroup, no luck.
Might anyone out there have an answer?
Thank you in advance for any information you may provide.
Cheers,
Tom


Sub OpenVBE()
' Open the Visual Basic Editor Programmatically

Application.VBE.MainWindow.Visible = True
'The next line of code goes to a specified module
ThisWorkbook.VBProject.VBComponents ("basModule1").Activate

End Sub
.
 
J

Jake Marx

Peter said:
Have you tried, simply:

Sub Test()
Application.Goto "MyRoutine"
End Sub

Nice catch, Peter! I didn't think of that one.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top