我正在从Outlook宏运行Excel宏,我需要获取Excel宏的退货。

我的Outlook Macro的代码如下所示:

Dim excelApp As Object

Set excelApp = CreateObject("Excel.Application")
excelApp.Workbooks.Open "C:\Users\meej\Documents\Book1.xlsm"

If excelApp.Run("ThisWorkbook.Foo", true) Then
    Debug.Print "TRUE"
Else
    Debug.Print "FALSE"
End If
excelApp.Quit
Set excelApp = Nothing


我的Excel宏如下所示:

Public Function Foo(ByVal result as Boolean) as Boolean
    Foo = result
    MsgBox Foo
End Function


我的MsgBox弹出并显示为true,但在Outlook中,我始终打印“ FALSE”。我滥用Run吗?

最佳答案

其他人可能会有更详细的答案,但总而言之,您的逻辑是正确的。 Ive在从ThisWorkbook调用自定义函数时总是遇到问题。使用您的确切代码,我可以通过将代码移至模块中来完成此工作

If excelApp.Run("Module1.Foo", true) Then


question展示了类似的问题,试图将ThisWorkbook中的函数用作公式

关于excel - 从运行中获取函数的返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26718123/

10-10 18:50