如何实例化vba类并从vb.net调用方法?

如何实例化vba类并从vb.net调用方法?,vb.net,ms-access,vba,office-interop,Vb.net,Ms Access,Vba,Office Interop,我想很多人都是这样,我现在使用的是一个ms access应用程序,它混合了表、VBA模块和VBA类。我打算将该应用程序迁移到VB.NET 但是,这需要一些时间,我想利用自动化将代码慢慢移动到VB.NET 现在我可以从我的VB.NET应用程序中调用常规的子函数和函数,但我想知道是否有方法调用用户定义对象的方法 我想做什么 VBA VB.Net ' Left out the opening of the access db oAccess.Run("Init") oAccess.Run("oClas

我想很多人都是这样,我现在使用的是一个ms access应用程序,它混合了表、VBA模块和VBA类。我打算将该应用程序迁移到VB.NET

但是,这需要一些时间,我想利用自动化将代码慢慢移动到VB.NET

现在我可以从我的VB.NET应用程序中调用常规的子函数和函数,但我想知道是否有方法调用用户定义对象的方法

我想做什么

VBA

VB.Net

' Left out the opening of the access db
oAccess.Run("Init")
oAccess.Run("oClass1.Test())

甚至可能吗?

应用程序.Run方法需要一个字符串,其中包含“要运行的函数或子过程的名称”作为其第一个参数。但“oClass1.Test”两者都不是

您可以通过创建另一个VBA过程来解决这个问题,该过程包装您的
oClass1.Test
方法,并运行包装过程

oAccess.Run(“Wrap\u oClass1\u Test”)“过程名称后没有括号
公共子包装oClass1测试()
oClass1.测试
端接头
我确认,当从VBScript调用时,该方法与示例代码的其余部分一起工作,因此我相信它也应该在VB.Net中工作


Tim的
CallByName
看起来也很有希望,但我没有测试它。

将代码/功能移植到VB.NET不是更容易吗?我不确定你是否可以从VB.NET调用VBA,但我认为这可能会比它的价值更大。尝试从NET创建VBA类的实例可能涉及COM,这将比移植代码更复杂。你可以尝试
CallByName
谢谢大家,我想我会尝试CallByName和Wrap方法的组合。这样,每个对象实例只需要一个包裹过程。我会回来报到的
' Left out the opening of the access db
oAccess.Run("Init")
oAccess.Run("oClass1.Test())