[英]Reference (out) parameters in VBA when using C# COM DLL
我有一個用C#編寫的COM DLL。 我正在使用VBA(MS Access 2010)中的DLL。
在DLL一些函數包含out
從VBA使用時工作不正常的參數:VBA給出當調用該函數時錯誤“不設置到對象的實例對象引用”。 DLL類中的所有其他功能均正常運行。
VBA代碼:
Dim par0 As String
par0 = "test"
Dim outPar1 As Boolean
Dim outPar2 As myDllNamespace.Foo
Set outPar2 = New myDllNamespace.Foo
Dim outPar3 As String
dllClassInstance.Bar par0 outPar1 outPar2 outPar3
C#COM DLL代碼(dLLClassInstance的類):
[ProgId("myDllNamespace.DllTestClass")]
[Guid( ... ),
ClassInterface(ClassInterfaceType.None),
ComDefaultInterface(typeof(IDllTestClass))]
public class DllTestClass : IDllTestClass
{
public void Bar(string filter, out bool success, out Foo entries, out string html) { ... }
}
C#COM DLL接口代碼(該類的接口):
[Guid( ... ), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IDllTestClass
{
void Bar(string filter, [Out] out bool success, [Out] out Foo entries, [Out] out string html);
}
為什么即使所有變量都具有值並且最后三個參數均為out參數,VBA仍會引發“對象引用未設置為對象實例”錯誤?
我不是一個VB.NET的人,但我可以告訴大家,VB.NET沒有out
等價的。 可能的方法是在導入Bar
方法時使用<Out>屬性。 然后,這取決於編譯器如何進行設置。
正如Hans Passant所說,這不是VBA錯誤,而是.NET COM庫中的錯誤。
通過修復COM庫,我可以使out參數正常工作。
謝謝您的支持!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.