• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル vba DoEventsをぬける方法)

エクセルVBAのDoEventsを使ったPDFからTIFFへの変換方法

このQ&Aのポイント
  • Ghostscriptを使用してエクセルのコマンドラインを利用してPDFファイルをTIFFファイルに変換する際に、一部のページが変換できない場合にDoEventsを使用してループします。
  • TIFFファイルは作成されますが、Result.Statusが0のままで終了フラグの1が立ちません。ループを抜ける方法はありますか?
  • エクセルVBAのDoEventsを利用してPDFからTIFFへの変換中、DoEventsが無限ループに陥ってしまう問題があります。解決方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

付け焼刃で力技ですが、以下のようなコードはいかがでしょうか。 なお、MaxTry = 5 この値はテストを繰り返し調整してくださ。 1秒間隔で5回という意味です。 sub xxxxx()  '~~~~~~    cmd = XPATH & "gs\gs9.27\bin\gswin32c.exe -dSAFER -dBATCH -dNOPAUSE _  -sDEVICE=tiffgray -r200 -sOutputFile=" & XPATH & HENKAN & " " & XPATH & PDFMEI  Set Result = WSH.exec("%ComSpec% /c " & cmd)  Dim ChkCnt As Long  Dim NgFlg As Boolean  Const MaxTry = 5 '最大DoEvents数 1回/秒  NgFlg = False  ChkCnt = 0  Do While Result.Status = 0   ChkCnt = ChkCnt + 1   DoEvents   If ChkCnt > MaxTry Then    NgFlg = True    Exit Do   End If   Call WaitFor(MaxTry)  Loop  '~~~~~~ end sub '--指定した秒だけ停止--- Function WaitFor(ByVal second As Integer)  Dim futureTime As Date  futureTime = DateAdd("s", second, Now)  While Now < futureTime   DoEvents  Wend End Function

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.1

-sOutputFileで指定しているパスをDoEventsの前でファイルサイズをチェックして、タイムアウト時間待ってもサイズが変化しなければExit Doする条件分岐を書けば良い。

DPS-DPS
質問者

お礼

ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A