質問: Now + TimeValue("0:00:03") Application.Wait waitTime Next End Sub ``` 問題なく実行され pdfファイルを出力され続けるのですが、以下のエラーが表示され 途中で処理が落ちてしまいます。 落ちる場所もランダムで、特定のシートで止まっているわけではありません エラー内容 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/0e3d8f8f4709422e74a06c2816d6cde5.png) 検索してもこのエラーが発生する原因が多いので特定することができませんでした 環境は以下の通りとなります ご教授頂ければと思います OS:Windows10 Excelバージョン:Excel2013 --- みなさま、コメントありがとうございます 皆様のコメントやご指摘を対応しておりますが、 現状、エラーは表示されております。 デバッグしたところ、pdfの出力処理、以下の行を実行後にエラーが発生しております。 ``` st.ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName ``` ループ中ランダムのタイミングで出力されるので、シートに問題が有るわけではないようです。 本処理を実行後、pdfを出力してからエラーが発生する感じです。 ちなみに、出力したファイルに問題はありません。 申し訳ありませんが、ご教授頂ければと思います。
回答: エラーコード 400 の意味はこちらを参考にして下さい。 おそらく、いくつかのオブジェクトの定義が曖昧なため、何らかの原因で処理中にワークシートなどが参照できない状態になり、 400 番エラーが出ているのではないでしょうか。 ひとまず、提示されたプログラムを流用して、具体的なオブジェクトを指定できるようにしてみました。 何枚印刷するかわかりませんが、とりあえずワークシート100枚程度ならば落ちませんでした。 ``` Option Explicit ' ファイル名 outputpdf.xlsm として保存。 ' イミディエイトウィンドウで、以下の通り、ワークブックを引数として呼び出す ' call sample(workbooks("outputpdf.xlsm")) Sub sample(wb As Workbook) ' 曖昧な定義を訂正 'Dim st As Object Dim st As Worksheet Dim outPutPath As String Dim fileName As String 'Dim waitTime As Variant outPutPath = "c:\work\" ' 指定したワークブック中のワークシート分ループ。 For Each st In wb.Sheets st.Activate fileName = outPutPath & st.Name ' ワークシートオブジェクトは、現在のワークシートを示す st を用いる。 'ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName st.ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName ' weit 不要 'waitTime = Now + TimeValue("0:00:03") 'Application.Wait waitTime Next End Sub ```