2016-11-17 29 views
0

私は、フォルダ内のすべてのマクロ対応Word文書をループし、コマンドラインからマクロを実行するスクリプトを作成しています。Word VBAマクロの終了コード?

マクロはページ数をカウントし、カウント値が1の場合はドキュメントをプリンタに送信します。

多くの文書を(一度に200個まで)扱うことになるので、私はそれを実行して非ゼロのコードで終了させたいので、それらのイベントを捕捉して戻すことができますユーザに提供する。

ただし、Application.Quitは終了コードを指定する方法を提供しません。私のスクリプトがそれについて知ることができるように、ドキュメントを終了させる別の方法がありますか?

EDIT:コードを要求しました。/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 
    } 
} 
+0

コードを投稿できますか?どのように "コマンドラインからマクロを"実行していますか?私は、マクロの返品ステータスを持つほうがずっと簡単なようです。 – Comintern

+0

多分あなたがしたいです: 'サブ(終了) のMsgBox 出口サブ End Subの ' – Andy

+0

@Andy「終了」:ちょうどサブを終了し、Wordを終了し、ゼロ以外のコードを返さないことを。 – Grayda

答えて

0

これは実際の回答ではありませんが、これは私の状況のた​​めの無理な回避策です。

コメントにいくつかの人々が示唆しているように、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() carks(しかし、と.err終わりに)、終了します。 Wordを実行しているスクリプトが終了すると、ディレクトリ内のすべての.errファイルが表示され、ファイル名と内容が画面に出力されます。

これをさらに展開して、ほとんど何かをチェックして、後に特定のエラーをキャッチすることができます。

私は答えとしてこれをマークするつもりはありません。私が主に喜んでいる方法で私の特定の問題を解決しますが、それは私のコアな質問には答えません。

関連する問題