【发布时间】:2014-07-22 03:07:30
【问题描述】:
我正在尝试让一些代码在 Excel VBA 和 VB.Net 之间运行。我在 Visual Studio 的 VB.Net 中有以下代码..
Public Class ThisAddIn
Private Sub ThisAddIn_Startup() Handles Me.Startup
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
Public Function Multiplication()
Dim activeWorksheet As Excel.Worksheet = CType(Application.ActiveSheet, Excel.Worksheet)
Dim Range1 As Excel.Range = activeWorksheet.Range("A1")
Dim Range2 As Excel.Range = activeWorksheet.Range("A2")
Dim x As Integer = Range1.Value
Dim y As Integer = Range2.Value
Return (x * y)
End Function
End Class
我在 VBA 中也有这段代码,我正在尝试运行
Sub Macro1()
Dim x
x = ThisAddIn.Multiplication
MsgBox (x)
End Sub
在 Visual Studio 中,我点击开始,然后将此代码放入 Excel VBA 中以弹出新窗口。
我在 VBA 行“x = ThisAddIn.Multiplication”上收到错误“424 Object Required”。如何从 VBA 调用 VB.Net 函数?
编辑:我正在使用 Excel 2013,VB.Net 2013 版(VB12),我想我的目标是 .Net 4.5+ 版
编辑:我尝试添加以下代码:
Imports System
Imports System.Collections.Generic
Imports System.Text
和
Private Sub Test()
Dim testClass As New ThisAddIn
MsgBox testClass.Multiplication()
End Sub
基于此guide,但它仍然无法正常工作。我找不到将项目连接到步骤 3 中提到的 Excel 的选项,因为它是一个旧指南。也许这是我的问题?
【问题讨论】:
-
您使用的是什么版本的 Excel 和 VB.NET,您的目标是什么版本的 .NET Framework?
-
我编辑了我的问题以添加此信息
-
有人有什么建议吗?..
-
在您的问题中,您发布了 Richard Newman 的“从 Excel 调用 .NET 库的初学者指南”的链接。您是否完全按照上面列出的示例进行操作,如果是,您是否让它发挥作用?如果没有,它是如何失败的?本指南第 3 步中的那些步骤实质上是将组件注册到操作系统的 COM 系统中。您可能还想看看这个past SO question。
-
您可能还应该看到这个 SO 问题/答案:Calling a .NET Library Method from VBA。此外,这个 SO 问题看起来与您的情况有关。请看:Difference between : adding a tlb as reference to invoke function VS using 'Run'?.