3

.pdfExcel スプレッドシート リストからさまざまなファイル拡張子を付けて複数の を印刷するプログラムを作成しました。問題は、line:が呼び出された
後、プリンターが pdf を受信するのに 30 秒から 1 分かかることです。 これを回避するために、私はファイルを閉じる前に 1 分間 (さらに安全のために 3 秒) 待っていました。私には、単にプログラムを待機させるよりも良い方法があるはずだと思われるので、少し調べてみると、として知られるこの素敵な宝石に関する質問が見つかりましたApplication.SendKeys "^p~", False
Application.Wait (Now + TimeValue("0:01:03"))Application.OnTime

私は答えの1つのサンプルを試しました:

Sub test2()
    ActiveSheet.Cells(1, 1).Value = ActiveSheet.Cells(1, 1).Value + 1
    Application.OnTime Now + TimeValue("00:00:5"), "test2"
End Sub

ただし、上記のコードを停止しようとすると、無限ループが続き、Windows タスク マネージャーを使用して Excel を終了するまで停止できませんでした。

ユーザーが待機時間の間にクリックできるように、小さなメッセージ ボックスなどを追加できるようにしたいと考えています。
プログラムが 1 分間待機している間、ユーザーは次の PDF でプログラムを手動でクリックして開始するか、印刷を早期に停止する必要がある場合は別のボタンをクリックして終了することができます。このようなもの:

Sub pdfPrinter()
    '...
    'Insert all the other code here
    '...
    Application.SendKeys "^p~", False
    Application.OnTime Now + TimeValue("00:01:02"), "pdfPrinter"
    continue= MsgBox("Click Retry to print again, or cancel to stop printer.", vbRetryCancel)
    If continue = vbRetry Then
        Call pdfPrinter
    ElseIf continue = vbCancel Then
        Exit Sub
    End If
End Sub
4

1 に答える 1