Come si impedisce la stampa della finestra di dialogo quando si utilizza il metodo Stampa di Excel
-
09-06-2019 - |
Domanda
Quando utilizzo il metodo PrintOut per stampare un oggetto Worksheet su una stampante, viene visualizzata la finestra di dialogo "Stampa" (che mostra il nome del file, la stampante di destinazione, le pagine stampate e un pulsante Annulla) anche se ho impostato DisplayAlerts = False.Il codice seguente funziona in una macro di Excel ma succede la stessa cosa se utilizzo questo codice in un'applicazione VB o VB.Net (con le modifiche di riferimento necessarie per utilizzare l'oggetto Excel).
Public Sub TestPrint()
Dim vSheet As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set vSheet = ActiveSheet
vSheet.PrintOut Preview:=False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
MODIFICARE:La risposta seguente fa più luce su questo (che potrebbe essere una finestra di dialogo di Windows e non una finestra di dialogo di Excel) ma non risponde alla mia domanda.Qualcuno sa come evitare che venga visualizzato?
MODIFICARE:Grazie per le tue ricerche extra, Kevin.Sembra proprio che questo sia ciò di cui ho bisogno.Non sono sicuro di voler accettare ciecamente un codice API del genere.Qualcun altro ha qualche conoscenza di queste chiamate API e che stanno facendo ciò che sostiene l'autore?
Soluzione
Quando dici la finestra di dialogo "Stampa", presumo che intendi la finestra di dialogo "Stampa ora xxx il" anziché la finestra di dialogo di stampa standard (seleziona stampante, numero di copie, ecc.).Prendendo l'esempio sopra e provandolo, questo è il comportamento che ho visto: "Ora stampa..." è stato visualizzato brevemente e poi si è chiuso automaticamente.
Ciò che stai cercando di controllare potrebbe non essere legato a Excel, ma essere invece un comportamento a livello di Windows.Se è controllabile, dovresti a) disabilitarlo, b) eseguire la stampa, c) riabilitare.Se il codice fallisce, c'è il rischio che non venga riabilitato per altre applicazioni.
MODIFICARE:Prova questa soluzione: Come si impedisce la stampa della finestra di dialogo quando si utilizza il metodo Stampa di Excel.Sembra descrivere esattamente ciò che stai cercando.
Altri suggerimenti
Se non vuoi mostrare la finestra di dialogo di stampa, esegui semplicemente un test macro come segue;non mostrerà alcuna finestra di dialogo di stampa e rileverà la stampante predefinita e stamperà immediatamente.
sub test()
activesheet.printout preview:= false
end sub
Esegui questa macro e stamperà il foglio attualmente attivo senza visualizzare la finestra di dialogo di stampa.
Le chiamate API nell'articolo collegato da Kevin Haines nascondono la finestra di dialogo Stampa in questo modo:
- Ottieni l'handle della finestra di dialogo Stampa.
- Invia un messaggio alla finestra per dirle di non ridisegnare
- Invalida la finestra, forzando un ridisegno che non avviene mai
- Di' a Windows di ridipingere la finestra, cosa che la farà scomparire.
È eccessivamente semplificato per usare un eufemismo.
Le chiamate API sono sicure, ma probabilmente vorrai assicurarti che l'aggiornamento dello schermo per la finestra di dialogo Stampa sia impostato su Vero se l'applicazione fallisce.