Создал COM-объект с функцией Init, которая принимает в себе параметр ParamArray:
VB.NET:
Imports System.Runtime.InteropServices
< _
ComVisible(True), _
Guid(Report.ClassId), _
ClassInterface(ClassInterfaceType.AutoDual), _
ProgId("Report") _
> _
Public Class Report
Public Const ClassId As String = "446A6BDB-348B-4346-9B2F-D2FF2B815A12"
Public Const InterfaceId As String = "4EE5444A-9348-4079-9960-B16D800144D9"
Public Const EventsId As String = "2225448B-E63B-4f61-8F88-FD107E38BCBB"
Public Sub New()
MyBase.New()
End Sub
Public Function Init(ByVal Host As String, ByVal ParamArray Parameters() As String) As String
Return "Ok"
End Function
End Class
Создаю объект, вызываю функцию Init с 3-мя строковыми параметрами. Получаю "
Wrong number of arguments or invalid property assignment Source: VBAProject":
Excel, VBA:
Sub Test()
On Error GoTo ErrLabel
Dim obj As Object
Set obj = CreateObject("Report")
MsgBox (obj.Init("127.1", "PARAM1", "PARAM2"))
GoTo EndLabel
ErrLabel:
MsgBox "Ошибка: " + Err.Description + " Source: " + Err.Source
EndLabel:
Set obj = Nothing
End Sub
Подскажите, что я делаю не так?
Спасибо.
Здравствуйте, dvin, Вы писали:
раз уж все молчат...
D>VB.NET:
D>D> Public Function Init(ByVal Host As String, ByVal ParamArray Parameters() As String) As String
D>
А если попробовать 'ByRef ParamArray Parameters()'
D>Создаю объект, вызываю функцию Init с 3-мя строковыми параметрами. Получаю "Wrong number of arguments or invalid property assignment Source: VBAProject":
Посмотри какие аргументы просит твой метод. В VBA посмотри, там ж есть возможность это сделать и прямо при кодописании ({Ctrl+i} вродь) и по {F2}.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков