2016-07-25 15 views
0

VBScriptの障害にerrorOccurredを放出しません:Qtの中QProcessは、私がタブにExcelファイルを変換するVBScriptは、テキストファイルで区切られている

format = -4158 

Set objFSO = CreateObject("Scripting.FileSystemObject") 

src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0)) 
dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item(1)) 

Dim oExcel 
Set oExcel = CreateObject("Excel.Application") 

oExcel.DisplayAlerts = False 
oExcel.ProtectedViewWindows.Open(src_file) 
oExcel.ActiveProtectedViewWindow.Edit 

Dim oBook 
Set oBook = oExcel.Workbooks.Open(src_file) 

oBook.Worksheets(5).Activate 

oBook.SaveAs dest_file, format 

oBook.Close False 
oExcel.DisplayAlerts = True 
oExcel.Quit 

が、私はこのコードを実行するためのWScriptを使用し、信号QProcessを接続しているが:: errorOccurred to lambda:

QObject::connect(&wscript, &QProcess::errorOccurred, [=](QProcess::ProcessError error) 
{ 

    qDebug() << "Error has occured"; 

}); 

私のVBスクリプトでは、保護されたビューが削除されています。しかし、保護されたビューを無効にしないようにスクリプトを修正しました。この結果、スクリプトが保護されたビューにあるExcelファイルを開くことができなくなり、Excelファイルを開くことができないというエラーが発生します。ただし、errorOccured信号は送信されません。なぜこうなった?

答えて

3

QProcess自体に問題がある場合、または実行中のプロセスがクラッシュした場合(hereの理由を参照)、信号が送信されます。

VBスクリプトでアプリにエラーを通知するには、QProcess::exitCodeで読み取ることができるゼロ以外の終了コードを使用するか、標準エラーストリームに書き込む必要があります。キャッチされ、QProcess::readyReadStandardErrorシグナルで読み取られます。

関連する問題