![]() |
Problem transferring VBA code w/ ProcOfLine & ProcBodyLine to VB.NET
I like to convert an Excel VBA Addin to VB.net to have it as a COM
addin (Visual Basic 2010 Express) The Problem: Normally when using ProOfLIne the parameter ProcKind returns the "vbext_ProcKind" but in vb.net it returns every time 0 (vbext_pk_Proc) The same Code in VBA does function correctly. Because of this ProcBodyLine throws an error whenever the Line of a Property should be determined. Anyone an idea how to solve this? my VB.Net code (almost identical to VBA) 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) ' <<< delivers always 0 for ProcKind! If Not ProcName = oldName Then oldName = ProcName myButton1 = moduleCmdBar.Controls.Add(msoControlButton) Select Case TypeOfProc(.Lines(.ProcBodyLine(ProcName, ProcKind), 1)) '<<< throws error when asking for line of a property 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 |
All times are GMT +1. The time now is 02:10 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com