首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.NET中访问VBA函数的返回值?

在.NET中访问VBA函数的返回值?
EN

Stack Overflow用户
提问于 2010-10-13 10:12:09
回答 3查看 3.5K关注 0票数 7

我在VBA (驻留在Excel 2007工作簿中)中有以下代码:

代码语言:javascript
复制
Public Function Multiply(a As Double, b As Double) As Double
    Multiply = a * b
End Function

如果我从其他VBA代码调用Multiply,它会返回正确的值。但是,当我从C#调用Multiply时:

代码语言:javascript
复制
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的返回值?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-15 04:24:38

您是否尝试过将函数移动到Excel中的常规模块(而不是工作表模块)?

票数 4
EN

Stack Overflow用户

发布于 2014-12-31 01:02:47

一个简单的例子:

测试spreadsheet.xlsm具有包含以下内容的Module1

代码语言:javascript
复制
Public Function test() As String
  test = "hello 1234"
End Function

已将objExcel设置为电子表格...

代码语言:javascript
复制
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. -去掉括号就成功了。

票数 0
EN

Stack Overflow用户

发布于 2010-10-13 10:43:00

尝试修改您的乘法函数,使其与以下代码类似:

代码语言:javascript
复制
Public Function Multiply(a As Double, b As Double) As Double
    return a * b
End Function
票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3920343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档