minimaster
2/16/2011 9:27:00 AM
I have a routine in Excel VBA which uses ProcBodyLine to retrieve a
procedure name and it works fine without any problems. I like to
convert my addin into a VB.Net based COM addin and now ProcBodyline
throws an error whenever it has to retrieve the name of a property.
Anyone an idea how I can manage to avoid these errors to retrieve the
name of these properties correctly.
my VB.Net code:
Imports Microsoft.Office.Core
Imports Excel = Microsoft.Office.Interop.Excel
Imports VBIDE = Microsoft.Vbe.Interop
Imports Microsoft.Vbe.Interop.vbext_ProcKind
Imports Microsoft.Vbe.Interop.vbext_ComponentType
Private Sub addRoutinesToPopup(ByRef moduleCmdBar As CommandBar, _
ByRef VBComp As VBIDE.VBComponent)
Dim ProcKind As VBIDE.vbext_ProcKind
Dim LineNum As Long
Dim ProcName As String
Dim oldName As String = ""
With VBComp.CodeModule
LineNum = .CountOfDeclarationLines + 1
Do Until LineNum >= .CountOfLines
ProcName = .ProcOfLine(LineNum, ProcKind)
If Not ProcName = oldName Then
oldName = ProcName
myButton1 =
moduleCmdBar.Controls.Add(msoControlButton)
Select Case
TypeOfProc(.Lines(.ProcBodyLine(ProcName, ProcKind), 1))
Case "Sub"
myButton1.FaceId = 186
Case "Sub with Param."
myButton1.FaceId = 187
Case "Function"
myButton1.FaceId = 385
Case Else
myButton1.FaceId = 190
End Select
With myButton1
.Caption = ProcName ' the sub or
Function name
.Parameter = TheMacroFile 'ADDIN_NAME '
the file name containing the macros
.Tag = VBComp.Name ' the
code module name
.OnAction = "!<MacroLister.Connect>"
End With
End If
LineNum = LineNum + .ProcCountLines(ProcName,
ProcKind)
LineNum = LineNum + 1
Loop
End With
End Sub