我在VBA (驻留在Excel 2007工作簿中)中有以下代码:
Public Function Multiply(a As Double, b As Double) As Double
Multiply = a * b
End Function如果我从其他VBA代码调用Multiply,它会返回正确的值。但是,当我从C#调用Multiply时:
var excel = new Application {Visible = true};
excel.Workbooks.Open(filename);
var returned = excel.Run("Sheet1.Multiply", (Double) a, (Double) b);..。乘法发生了(我可以通过向VBA中的Multiply函数添加跟踪来验证这一点),但是返回值在我的C#代码中不可用;returned始终为null。
谁能告诉我如何从我的C#代码中获取Multiply的返回值?
发布于 2010-10-15 04:24:38
您是否尝试过将函数移动到Excel中的常规模块(而不是工作表模块)?
发布于 2014-12-31 01:02:47
一个简单的例子:
测试spreadsheet.xlsm具有包含以下内容的Module1:
Public Function test() As String
test = "hello 1234"
End Function已将objExcel设置为电子表格...
Dim result = objExcel.Run("Module1.test")
MsgBox(result)..。在弹出消息中生成hello 1234。
因为我最初在VBA即时窗口中(成功地)用? module1.test()测试了这一点,所以我最初试图让objExcel.Run("Module1.test()")工作-但我得到了一个错误:Cannot run the macro .... The macro may not be available in this workbook or all macros may be disabled. -去掉括号就成功了。
发布于 2010-10-13 10:43:00
尝试修改您的乘法函数,使其与以下代码类似:
Public Function Multiply(a As Double, b As Double) As Double
return a * b
End Functionhttps://stackoverflow.com/questions/3920343
复制相似问题