Comment empêcher l'impression de la boîte de dialogue lorsque vous utilisez la méthode Excel PrintOut

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

Question

Lorsque j'utilise la méthode PrintOut pour imprimer un objet de feuille de calcul sur une imprimante, le message "Impression" Une boîte de dialogue (indiquant le nom du fichier, l’imprimante de destination, les pages imprimées et un bouton Annuler) apparaît même si j’ai défini DisplayAlerts = False. Le code ci-dessous fonctionne dans une macro Excel, mais la même chose se produit si j'utilise ce code dans une application VB ou VB.Net (avec les modifications de référence requises pour utiliser l'objet 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

EDIT: La réponse ci-dessous apporte plus de clarté à ce sujet (qu’il s’agisse d’une boîte de dialogue Windows et non d’une boîte de dialogue Excel), mais ne répond pas à ma question. Est-ce que quelqu'un sait comment empêcher son affichage?

EDIT: Merci pour vos recherches supplémentaires, Kevin. Il me semble que c'est ce dont j'ai besoin. Juste pas sûr de vouloir accepter aveuglément un code API comme ça. Quelqu'un d'autre at-il une connaissance de ces appels d'API et sait-il ce que l'auteur prétend?

Était-ce utile?

La solution

Lorsque vous dites "Impression" Dialogue, je suppose que vous entendez le " Maintenant imprimer xxx sur " dialogue plutôt que le dialogue d’impression standard (imprimante, nombre de copies, etc.). En prenant votre exemple ci-dessus & amp; l’essayer, c’est le comportement que j’ai constaté - "Nous imprimons maintenant ...". a été affiché brièvement & amp; puis fermé automatiquement.

Ce que vous essayez de contrôler peut ne pas être lié à Excel, mais plutôt à un comportement au niveau de Windows. S'il est contrôlable, vous devrez a) le désactiver, b) imprimer, c) le réactiver. Si votre code échoue, vous risquez de ne pas le réactiver pour d'autres applications.

EDIT: essayez cette solution: Comment empêcher l'impression d'une boîte de dialogue lorsque vous utilisez la méthode Excel PrintOut . Il semble décrire exactement ce que vous recherchez.

Autres conseils

Si vous ne souhaitez pas afficher le dialogue d'impression, effectuez simplement un test de macro comme suit. il ne fera apparaître aucun dialogue d'impression, détectera l'imprimante par défaut et imprimera immédiatement.

sub  test()

 activesheet.printout preview:= false

end sub

Exécutez cette macro pour imprimer la feuille active sans afficher la boîte de dialogue Imprimer.

Les appels d'API dans l'article lié par Kevin Haines masquent la boîte de dialogue d'impression comme suit:

  1. Obtenez le handle de la fenêtre de dialogue d'impression.
  2. Envoyez un message à la fenêtre pour lui dire de ne pas redessiner
  3. Invalide la fenêtre, ce qui force un redessinage qui ne se produit jamais
  4. Demandez à Windows de repeindre la fenêtre, ce qui la fera disparaître.

C'est trop simpliste pour le dire gentiment.

Les appels d'API sont sécurisés, mais vous voudrez probablement vous assurer que la mise à jour de l'écran pour la boîte de dialogue Impression est définie sur True si votre application échoue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top