我正在从Outlook宏运行Excel宏,我需要获得Excel宏的返回。
我的Outlook宏代码如下所示:
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
吗?
答案 0 :(得分:2)
其他人可能会有更详细的答案,但简而言之,你的逻辑是合理的。我总是遇到从ThisWorkbook
调用自定义函数的问题。使用您的确切代码,我可以通过将代码移动到模块
If excelApp.Run("Module1.Foo", true) Then
此question显示了尝试使用ThisWorkbook
中的函数作为公式
答案 1 :(得分:1)
我在Excel和MS Project的上下文中使用了Application.Run方法。似乎没有办法在MS Project文件中触发Excel中的FUNCTION而不是触发方法。后来我找到了让Excel与MS-Project进行通信的工作:
FROM Excel:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
…
private static final Logger LOGGER = LoggerFactory.getLogger(Something.class);
项目内容
Function doSomethingInProject()
Dim params(0 To 1) As String
params(0) = "Some param"
params(1) = "RETURN_VALUE"
Dim prj As Object
Set prj = CreateObject("msproject.application")
prj.FileOpen Name:=filename, ReadOnly:=False, FormatID:="MSProject.MPP"
prj.Application.Run "runTheMethod", params
prj.FileSave
prj.FileClose
prj.Quit
Msgbox "return value is " & params(1)
End Function
我希望能帮助某人,对我而言需要一点时间才能弄明白:)
祝你好运
约尔格