繁体   English   中英

Word VBA宏的退出代码?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM