Excel VBA の実行時エラー辞典
実行時エラー '61':ディスクの空き容量が不足しています
書き込み先の空き容量や割り当て上限を確認し、途中までの出力を完成品と分けます。
よくある原因
- CSV やログを出力するドライブの空き容量がありません。
- 共有フォルダの利用者ごとの容量上限に達しています。
- 追記するログが増え続け、Print # や Close の書き込みが完了できません。
直し方
- エクスプローラーなどで保存先の空き容量を調べ、共有先なら割り当て上限も確認します。
- 必要なデータを整理するか、容量と書き込み権限を確認した別ドライブへ出力先を変えます。
- 途中で失敗したファイルを集計結果に混ぜず、処理後に件数と内容を照合します。
元のブックや入力ファイルを残し、コピーで試してください。以下は一つの原因を扱う例です。Sub 全体を示していないコードは、練習用の Sub の中に記述します。
別ドライブ D: に書き込み可能な練習用フォルダを用意した場合の例です。コードだけでは空き容量は増えません。Close で失敗する場合もあります。
修正前
Dim fileNo As Integer
fileNo = FreeFile
Open "C:\VbaPractice\log.txt" For Append As #fileNo
Print #fileNo, "集計開始"
Close #fileNo
修正後
Dim fileNo As Integer
' D: の空き容量とフォルダを事前に確認します
fileNo = FreeFile
Open "D:\VbaPractice\log.txt" For Append As #fileNo
Print #fileNo, "集計開始"
Close #fileNo
調べ方
- エラー画面の「デバッグ」が使える場合は押し、黄色で止まった行とメッセージ全文を記録します。Windows では Alt+F11 で VBE を開けます。
- 停止行の少し前を選び、F9 でブレークポイントを設定します。再実行して止めたら、F8 で一行ずつ進めます。
- 出力先ドライブと出力件数を記録し、繰り返しが予定どおり終了するか確認します。
- Ctrl+G でイミディエイトウィンドウを開き、下の式を入力して Enter を押します。例の変数があるプロシージャ内で停止し、変数名は自分のコードに合わせてください。
? Err.Number, Err.Description
Err の情報はエラーが起きた直後に確認します。修正後は、正常な入力と問題が起きた入力の両方で結果を照合してください。