代码之家  ›  专栏  ›  技术社区  ›  Duncan Bayne

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

  •  6
  • Duncan Bayne  · 技术社区  · 14 年前

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

    Public Function Multiply(a As Double, b As Double) As Double
        Multiply = a * b
    End Function
    

    如果我从其他VBA代码调用乘法,它将返回正确的值。但是,当我从Cé调用multiple时:

    var excel = new Application {Visible = true};
    excel.Workbooks.Open(filename);
    var returned = excel.Run("Sheet1.Multiply", (Double) a, (Double) b);
    

    ... 乘法发生了(我可以通过在VBA中向乘法函数添加跟踪来验证这一点),但是返回的值在我的C代码中不可用; returned null .

    3 回复  |  直到 14 年前
        1
  •  4
  •   shA.t Rami Jamleh    9 年前

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

        2
  •  0
  •   AjV Jsy    10 年前

    一个简单的例子:

    电子表格.xlsm Module1 包含:

    Public Function test() As String
      test = "hello 1234"
    End Function
    

    objExcel

    Dim result = objExcel.Run("Module1.test")
    MsgBox(result)
    

    ... 生产 hello 1234

    因为我最初是用 ? 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.

        3
  •  -4
  •   AeroX arpit desai    11 年前

    尝试将乘法函数修改为如下代码:

    Public Function Multiply(a As Double, b As Double) As Double
        return a * b
    End Function