ネットワークプリンター2台にワークシートを出力するコードで悩んでいます。
下記のコードを繰り返すと110枚前後でリソース不足が発生することが分かりました。
保存しないで終了し再度開くとリセットされることも分かりました。
保存しないで終了は出来るのですが、同じファイルを再度開くことはマクロで出来ますか?
宜しくお願い致します。
===================================
'全ての Book を保存しないで閉じる
'最後に Excel も終了する
Sub excel_Quit()
Dim w As Workbook
'全ての Book を保存したことにする (保存はしない)
For Each w In Workbooks
w.Saved = True
Next
'Excel を終了する
Application.Quit
'Book を閉じる
ThisWorkbook.Close False
End Sub
==============================
Sub チェンジプリンター() '印刷切り替え処理
If Worksheets("DeviceRead-Write").Cells(6, 13).Value = 1 Then 'I6 が1ならEPSON_Aに印刷する(D10000上位2ビットが1)
プリンターA出力
ElseIf Worksheets("DeviceRead-Write").Cells(6, 13).Value = 2 Then 'I6 が1ならEPSON_Bに印刷する(D10000上位2ビットが2)
プリンターB出力
Else
DoEvents
End If
End Sub
Sub プリンターA出力(): 'プリンターAに印刷
Application.ActivePrinter = "EPSON_A on Ne01:" 'プリンターAを指定
Worksheets("form").PrintOut 'シートFormの印刷
Exit Sub
End Sub
Sub プリンターB出力(): 'プリンターBに印刷
Application.ActivePrinter = "EPSON_B on Ne00:" 'プリンターBを指定
Worksheets("form").PrintOut 'シートFormの印刷
Exit Sub
End Sub
閉じる前に保存する場合は、該当処理wコメントアウトしてください。
■VBAコード
Public Sub sample()
'上書き保存(必要であればコメントアウトを外してください)
'ThisWorkbook.Save
Application.OnTime Now, "OpenBook"
ThisWorkbook.Close
End Sub
Private Sub OpenBook()
ThisWorkbook.Activate
End Sub
お礼
早速のアドバイスありがとうございます。 再起動出来ました。 こんなに簡単なコードで出来るなんて思ってもいませんでした。 本当にありがとうございます。 この1週間悩み続けましたのですっきりしました。