Discussion: Printout en VBScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    septembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : septembre 2016
    Messages : 7
    Points : 8
    Points
    8

    Par défaut Printout en VBScript

    Bonjour,

    Je souhaite imprimer avec pdfcreator un certain nombre de pages d'un document word. En VBscript, il semble que PrintOut renvoie une erreur dès qu'on tente de lui mettre une option, donc impossible de lui spécifier un nombre de pages ou un range. Ci-dessous, un script qui fonctionne très bien pour imprimer l'ensemble du document et que j'aimerais modifier. Toute suggestion pour imprimer un range sera bienvenue.
    Les informations les plus proches de mon problème que j'ai pu trouver sur le net (en anglais) sont ici: https://www.experts-exchange.com/que...t-working.html
    mais cela ne résout pas vraiment le problème...

    Merci d'avance.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Set objWord = CreateObject("Word.Application")
    Set objOptions = objWord.Options
    Set objDoc = objWord.Documents.Open("C:\DATA\test.docx")
    Set PDFCreator = CreateObject("PDFCreator.clsPDFCreator","localhost")
     
    strDefault = objWord.ActivePrinter
    objWord.ActivePrinter = "PDFCreator"
     
    With PDFCreator
       .cStart "/NoProcessingAtStartup"
       .cOption("UseAutosave") = 1
       .cOption("UseAutosaveDirectory") = 1
       .cOption("AutosaveFormat") = 0                  ' 0 = PDF
       DefaultPrinter = .cDefaultprinter
       .cOption("AutosaveFilename") = "testout"
       .cPrintfile cStr("Test1")
       .cClearcache
       .cPrinterStop = False
    End With
     
    objWord.PrintOut
     
     
    objWord.ActivePrinter = strDefault
     
    Wscript.Sleep 2000
    objWord.Quit

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    juin 2006
    Messages
    5 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : juin 2006
    Messages : 5 480
    Points : 14 224
    Points
    14 224

    Par défaut

    Salut, est-ce que cela te sera utile, c'est du VBA ? Impression Document Word en PDF mais via Acrobat ( pas le Reader )
    Pour info : PrintOut génère un fichier PS qu'il faut ensuite transcrire en PDF.
    Pensez à Voter, d'avance merci. @+ Philippe
    Balisez votre code après l'avoir indenté sous Excel (< 2013) via Smart Indenter
    Autres utilitaires : MZ Tools 8.0 VBA , 7Zip et Antidote

    Liste des Contributions : Manipulations des PDF via Excel / Acrobat / PDFCreator / xPDF

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    septembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : septembre 2016
    Messages : 7
    Points : 8
    Points
    8

    Par défaut

    Merci, mais je cherche une solution VBS. En VBA, printout semble accepter les options de range, pages, etc. cf. https://msdn.microsoft.com/fr-fr/lib.../ff840681.aspx

    C'est quand je l'utilise dans du VBS que je n'arrive pas à exploiter ces options.
    Je suis surpris par:
    Citation Envoyé par kiki29 Voir le message
    Pour info : PrintOut génère un fichier PS qu'il faut ensuite transcrire en PDF.
    Car dans mon script le printout génère bien un pdf.
    Mon seul pb est que je n'arrive pas à n'imprimer que certaines pages. Dans le pire des cas, je peux post-traiter le pdf pour enlever les pages superflues, mais il doit sans doute y avoir une solution plus propre.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    septembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : septembre 2016
    Messages : 7
    Points : 8
    Points
    8

    Par défaut Trouvé !

    J'ai trouvé une autre solution que le post-traitement. Comme je disais dans mon dernier post PrintOut est du VBA.
    Je procède donc en 2 temps:
    1/ je crée une macro VBA dans laquelle je mets l'instruction PrintOut avec les options qui me conviennent
    2/ dans mon VBS, je lance la macro
    Et le tour est joué

    Ci-dessous un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Set objWord = CreateObject("Word.Application")
    Set objOptions = objWord.Options
    Set objDoc = objWord.Documents.Open("C:\DATA\test.docx")
    Set PDFCreator = CreateObject("PDFCreator.clsPDFCreator","localhost")
     
    '  ici je configure les options de PDFCreator comme précédemment
     
    strDefault = objWord.ActivePrinter
    objWord.ActivePrinter = "PDFCreator"
     
    objWord.Run "myMacroPrint" ' <- ici je lance la macro
     
     
    Wscript.Sleep 2000
    '   ici je restitue les options initiales de PDFCreator
    objWord.ActivePrinter = strDefault
     
    objWord.Quit

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    septembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : septembre 2016
    Messages : 7
    Points : 8
    Points
    8

    Par défaut Alternative

    Je continue a faire mes premiers pas en VBS. En fait on peut tout à fait lancer "printout" directement depuis le VBS sans passe par le lancement d'une macro VBA. Il faut simplement respecter quelques règles d'utilisation/syntaxe de commandes VBA dans du VBS. Le point principal étant que tout doit être explicité est que les constantes prédéfinies dans VBA ne sont pas connues de VBS . Donc le remplacement de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objWord.Run "myMacroPrint
    par le code ci-dessous produit exactement le même résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Const wdPrintRangeOfPages = 4
    Const wdPrintAllPages = 0
    Const Copies = 1
    ....
     
    objWord.PrintOut True, , wdPrintRangeOfPages, , , , , Copies, "2-", wdPrintAllPages, , True, , , , 0, 0, 0, 0
    C'est sans doute trivial, mais ça pourra peut être servir à un autre débutant en VBS puisque j'avais peiné à trouver cette info.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une doc VBScript complète et compacte
    Par jérôme dans le forum ASP
    Réponses: 5
    Dernier message: 13/03/2013, 10h46
  2. [ASP][VBscript]Bouton et procédure
    Par Petitjean_85 dans le forum ASP
    Réponses: 2
    Dernier message: 09/06/2004, 15h57
  3. VBScript pour obtenir l'espace disque libre
    Par Archangelo dans le forum ASP
    Réponses: 2
    Dernier message: 05/05/2004, 13h33
  4. liste déroulante en ASP vbscript
    Par leeloo076 dans le forum ASP
    Réponses: 9
    Dernier message: 17/03/2004, 17h42
  5. ASP,JavaScript,VBScript
    Par Zazeglu dans le forum ASP
    Réponses: 6
    Dernier message: 01/09/2003, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo