【发布时间】:2011-04-24 15:15:57
【问题描述】:
我在 VBA 中有以下代码(位于 Excel 2007 工作簿中):
Public Function Multiply(a As Double, b As Double) As Double
Multiply = a * b
End Function
如果我从其他 VBA 代码调用乘法,它会返回正确的值。但是,当我从 C# 调用乘法时:
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() 将单元格的值设置为返回值,并从 C# 读取该单元格的值来解决此问题。丑陋但有效。
-
知道为什么它可以在模块中工作而不是在工作表中吗?
-
恐怕没有。实际上,自 2011 年以来,我还没有在 Microsoft 方面做过任何重要的工作,所以除非其他人可以提供帮助,否则这可能不会得到解答......
标签: c# .net excel vba office-interop