正如我猜的那样,我正坐在一个带有表,VBA模块和VBA类混合的ms访问应用程序中。我打算将该应用程序迁移到VB.NET。
然而,这需要一些时间,我想利用自动化将代码慢慢移动到VB.NET
现在我可以从我的VB.NET应用程序中调用常规的SUB和函数,但想知道是否有办法调用用户定义对象的方法。
粗略的例子我想做什么
VBA
'Class1
Public Sub Test()
Print "Hello world"
End Sub
'Module1
Public oClass1 as Class1
Public Sub Init()
Set oClass1 = New Class1
End Sub
VB.Net
' Left out the opening of the access db
oAccess.Run("Init")
oAccess.Run("oClass1.Test())
甚至可能吗?
答案 0 :(得分:3)
Application.Run
方法需要一个字符串,其中包含“要运行的Function或Sub过程的名称”作为其第一个参数。但“oClass1.Test”既不是。
您可以通过创建另一个包装oClass1.Test
方法的VBA过程来解决该问题,并运行包装程序......
oAccess.Run("Wrap_oClass1_Test") ' no parentheses after procedure name
Public Sub Wrap_oClass1_Test()
oClass1.Test
End Sub
我确认当从VBScript调用时,该方法与其余示例代码一起工作,所以我相信它也可以在VB.Net中运行。
蒂姆的CallByName
suggestion看起来很有希望,但我没有测试那个。