Frage

Wenn ich die PrintOut-Methode verwenden, um ein Arbeitsblatt-Objekt an einen Drucker, der „Druck“ -Dialog drucken (zeigt Dateinamen, Zieldrucker, Seiten gedruckt und eine Schaltfläche Abbrechen) wird angezeigt, obwohl ich Displayalerts gesetzt habe = False. Der folgende Code funktioniert in einem Excel-Makro, aber das gleiche passiert, wenn ich diesen Code in einem VB oder VB.Net Anwendung (mit der Referenz Änderungen erforderlich, um das Excel-Objekt zu verwenden) verwenden.

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

EDIT: Die Antwort unten wirft mehr Licht auf diesem (dass es sich um einen Windows-Dialog sein kann und nicht ein Excel-Dialog), aber meine Frage nicht beantwortet. Hat jemand wissen, wie es zu verhindern, dass angezeigt wird?

EDIT: Vielen Dank für Ihre persönliche Forschung, Kevin. Es sieht ganz so aus wie das ist, was ich brauche. Nur nicht sicher, ob ich mag blind API-Code wie das akzeptieren. Hat jemand irgendwelche Kenntnisse über diese API-Aufrufe haben und dass sie tun, was der Autor vorgibt?

War es hilfreich?

Lösung

Wenn Sie die „Drucken“ Dialog sagen, ich nehme an, Sie meinen die „Drucken xxx nun auf“ Dialog statt Standard-Druckdialog (Drucker auswählen, Anzahl der Kopien usw.). Unter Ihrem Beispiel oben und es auszuprobieren, das ist das Verhalten, das ich sah - „Jetzt Druck ...“ wurde kurz angezeigt und dann automatisch geschlossen

.

Was Sie versuchen können zu steuern, nicht zu Excel gebunden werden, sondern von Windows-Ebene Verhalten sein. Wenn es steuerbar ist, müssen Sie zu a) deaktivieren, b) führen Sie Ihren Druck, c) wieder aktivieren. Wenn Ihr Code fehlschlägt, besteht das Risiko, das ist nicht für andere Anwendungen wieder freigegeben.

EDIT: Diese Lösung Versuchen: Wie verhindern Sie Druckdialog, wenn Excel PrintOut-Methode . Es scheint, genau zu beschreiben, was Sie nach.

Andere Tipps

Wenn Sie nicht über den Druckdialog angezeigt werden sollen, dann einfach einen Makro-Test machen, wie folgt; es wird keinen Druckdialog zeigen und die Standarddrucker und sofort drucken erkennen.

sub  test()

 activesheet.printout preview:= false

end sub

Dieses Makro ausführen und es wird das momentan aktive Blatt drucken, ohne den Druckdialog angezeigt wird.

Die API-Aufrufe in dem Artikel verknüpft durch Kevin Haines versteckt den Druck-Dialog wie folgt:

  1. Holen Sie sich den Griff des Druckdialogfenster.
  2. Senden an das Fenster eine Nachricht, ihm zu sagen, nicht neu zu zeichnen
  3. Invalidate das Fenster, die einen Neuaufbau zwingt, die nie passiert
  4. Bitte geben Sie Windows das Fenster neu zu zeichnen, die sie verschwinden verursacht.

Das ist stark vereinfacht es gelinde auszudrücken.

Die API-Aufrufe sind sicher, aber Sie werden wahrscheinlich wollen Sie sicher, dass die Bildschirmaktualisierung für den Druck-Dialog, um auf True gesetzt ist, wenn die Anwendung fehlschlägt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top