Come si impedisce la stampa della finestra di dialogo quando si utilizza il metodo Stampa di Excel

StackOverflow https://stackoverflow.com/questions/67219

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?

È stato utile?

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:

  1. Ottieni l'handle della finestra di dialogo Stampa.
  2. Invia un messaggio alla finestra per dirle di non ridisegnare
  3. Invalida la finestra, forzando un ridisegno che non avviene mai
  4. 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top