[英]Exit code for Word VBA Macro?
我正在编写脚本,该脚本将循环遍历文件夹中所有启用宏的Word文档,并从命令行运行宏。
我的宏对页面进行计数,如果计数恰好为1,则将文档发送到打印机。
因为我要处理很多文档(一次最多处理200个文档),所以我想让它运行并以非零代码退出,这样我就可以捕获这些事件并将其报告给用户。
但是Application.Quit
没有提供指定退出代码的方法。 是否有另一种方法可以使我的脚本可以知道文档的退出方式?
编辑:按要求编码。 将/ path /替换为实际路径。
function bulkPrint() {
// Get folder of files
$files = scandir("/path/to/my/files/");
$output = "";
$exitCode = -1;
// Loop through each file
foreach($files as $file) {
// Not real paths
exec("/path/to/winword.exe /q /x /mMyMacro \"/path/to/my/files/" . $file . "\"", $output, $exitCode);
echo $exitCode; // Always returns 0 because Word exited cleanly
}
}
这并不是真正的答案,但是对于我的情况,这是一个可行的解决方法。
正如评论中一些人建议的那样,您可以使用VBA在同一文件夹中创建一个文件,然后将其用作退出代码。
就我而言,代码最终看起来像这样:
Sub MyMacro()
On Error GoTo ErrHandler
' My code that may or may not fail
' More code here to exit if no error
Exit Sub
ErrHandler:
WriteError Err.Description
End
End Sub
Sub WriteError(errText As String)
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim oFile As Object
Set oFile = fso.CreateTextFile(ActiveDocument.Path & "\" & ActiveDocument.Name & ".err")
oFile.WriteLine errText
oFile.Close
Set fso = Nothing
Set oFile = Nothing
End Sub
因此,当MyMacro()
对其进行提示时,错误描述将被写入具有相同文件夹和名称(但末尾带有.err
)的文件,然后退出。 当我的脚本运行完Word后,它将遍历目录中的所有.err文件,并将文件名和内容输出到屏幕,以便我可以查看哪些项目通过了哪些项目以及哪些失败了。
我可以进一步扩展它,以检查几乎所有内容并捕获我追寻的特定错误。
不过,我不会将其标记为答案。 虽然它确实以我最满意的方式解决了我的特定问题,但它没有用错误代码回答我的核心问题: VBA是否可以退出
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.