OVH Cloud OVH Cloud

Imprimer une série de documents en pilotant WORD - problème !!!

4 réponses
Avatar
teddy
Bonjour,
Voici une partie du code.
Le problème, c'est que si l'instance WORD est fermée après le PrintOut, tous mes
documents ne sont pas imprimés.
D'autre part, je ne peux la lancer qu'une fois sinon j'ai l'étrange message
"Serveur n'existe pas ou indisponible".
Qu'en pensez-vous ?


Dim AppWord As Object
Set AppWord = CreateObject("Word.Application") ' Création instance WORD
AppWord.Visible = False ' Word non visible
AppWord.DisplayAlerts = False ' Pas de renvoi de
message WORD

Tfile = Dir(Tfolder & "\*.htm") ' Capture Nom du 1er
fichier du répertoire désigné par Tfolder

Do While Tfile <> ""
AppWord.Documents.Open (Tfolder & "\" & Tfile) ' Ouverture
document
ActiveDocument.Range.Font.Size = 7 ' Forçage Taille
Police
ActiveDocument.PrintOut ' Impression
document
ActiveDocument.Close
Tfile = Dir() ' Capture Nom du fichier
suivant
Loop

' Instance provisoirement laissée ouverte !!!
'MyTime = Time()
'Do While Time < DateAdd("s", 2, MyTime) ' Tempo avant fermeture
'Loop
'AppWord.Quit
'Set AppWord = Nothing

4 réponses

Avatar
Christian Hubert-Hugoud
Peut-être qu'il y a une commande/propriété qui permet de savoir si Word a
fini d'envoyer son doc à l'imprimante ?

Il me semble que tu clos trop tôt la session Word.

Christian


" teddy" a écrit dans le message de news:

Bonjour,
Voici une partie du code.
Le problème, c'est que si l'instance WORD est fermée après le PrintOut,
tous mes documents ne sont pas imprimés.
D'autre part, je ne peux la lancer qu'une fois sinon j'ai l'étrange
message "Serveur n'existe pas ou indisponible".
Qu'en pensez-vous ?


Dim AppWord As Object
Set AppWord = CreateObject("Word.Application") ' Création instance
WORD
AppWord.Visible = False ' Word non visible
AppWord.DisplayAlerts = False ' Pas de renvoi de
message WORD

Tfile = Dir(Tfolder & "*.htm") ' Capture Nom du
1er fichier du répertoire désigné par Tfolder

Do While Tfile <> ""
AppWord.Documents.Open (Tfolder & "" & Tfile) ' Ouverture
document
ActiveDocument.Range.Font.Size = 7 ' Forçage
Taille Police
ActiveDocument.PrintOut ' Impression
document
ActiveDocument.Close
Tfile = Dir() ' Capture Nom du
fichier suivant
Loop

' Instance provisoirement laissée ouverte !!!
'MyTime = Time()
'Do While Time < DateAdd("s", 2, MyTime) ' Tempo avant
fermeture
'Loop
'AppWord.Quit
'Set AppWord = Nothing



Avatar
teddy
Oui, je clos la session trop tôt mais je ne sais pas comment évaluer ce qui
reste à imprimer.
S'il y a d'autres idées, je suis preneur...
Merci encore.
Ted


"Christian Hubert-Hugoud" a écrit dans le message de
news: %
Peut-être qu'il y a une commande/propriété qui permet de savoir si Word a fini
d'envoyer son doc à l'imprimante ?

Il me semble que tu clos trop tôt la session Word.

Christian


" teddy" a écrit dans le message de news:

Bonjour,
Voici une partie du code.
Le problème, c'est que si l'instance WORD est fermée après le PrintOut, tous
mes documents ne sont pas imprimés.
D'autre part, je ne peux la lancer qu'une fois sinon j'ai l'étrange message
"Serveur n'existe pas ou indisponible".
Qu'en pensez-vous ?


Dim AppWord As Object
Set AppWord = CreateObject("Word.Application") ' Création instance
WORD
AppWord.Visible = False ' Word non visible
AppWord.DisplayAlerts = False ' Pas de renvoi de
message WORD

Tfile = Dir(Tfolder & "*.htm") ' Capture Nom du 1er
fichier du répertoire désigné par Tfolder

Do While Tfile <> ""
AppWord.Documents.Open (Tfolder & "" & Tfile) ' Ouverture
document
ActiveDocument.Range.Font.Size = 7 ' Forçage Taille
Police
ActiveDocument.PrintOut ' Impression
document
ActiveDocument.Close
Tfile = Dir() ' Capture Nom du
fichier suivant
Loop

' Instance provisoirement laissée ouverte !!!
'MyTime = Time()
'Do While Time < DateAdd("s", 2, MyTime) ' Tempo avant fermeture
'Loop
'AppWord.Quit
'Set AppWord = Nothing







Avatar
Jean Yves SÉVENO
Bonjour.

La propriété BackgroundPrintingStatus de l'objet Application de Word est
faite pour ça. Elle renvoie le nombre de travaux d'impression se trouvant
dans la file d'attente d'impression en arrière plan.

Il suffit donc de boucler dessus jusqu'à ce qu'elle renvoie 0. Quelque chose
comme :

If AppWord.BackgroundPrintingStatus > 0 Then
Do Until AppWord.BackgroundPrintingStatus = 0
DoEvents
Loop
End If
AppWord.Quit

Cordialement.

Jean Yves



" teddy" a écrit dans le message de news:

Oui, je clos la session trop tôt mais je ne sais pas comment évaluer ce
qui reste à imprimer.
S'il y a d'autres idées, je suis preneur...
Merci encore.
Ted


"Christian Hubert-Hugoud" a écrit dans le message
de news: %
Peut-être qu'il y a une commande/propriété qui permet de savoir si Word a
fini d'envoyer son doc à l'imprimante ?

Il me semble que tu clos trop tôt la session Word.

Christian


" teddy" a écrit dans le message de news:

Bonjour,
Voici une partie du code.
Le problème, c'est que si l'instance WORD est fermée après le PrintOut,
tous mes documents ne sont pas imprimés.
D'autre part, je ne peux la lancer qu'une fois sinon j'ai l'étrange
message "Serveur n'existe pas ou indisponible".
Qu'en pensez-vous ?


Dim AppWord As Object
Set AppWord = CreateObject("Word.Application") ' Création
instance WORD
AppWord.Visible = False ' Word non
visible
AppWord.DisplayAlerts = False ' Pas de renvoi
de message WORD

Tfile = Dir(Tfolder & "*.htm") ' Capture Nom du
1er fichier du répertoire désigné par Tfolder

Do While Tfile <> ""
AppWord.Documents.Open (Tfolder & "" & Tfile) ' Ouverture
document
ActiveDocument.Range.Font.Size = 7 ' Forçage
Taille Police
ActiveDocument.PrintOut '
Impression document
ActiveDocument.Close
Tfile = Dir() ' Capture Nom du
fichier suivant
Loop

' Instance provisoirement laissée ouverte !!!
'MyTime = Time()
'Do While Time < DateAdd("s", 2, MyTime) ' Tempo avant
fermeture
'Loop
'AppWord.Quit
'Set AppWord = Nothing











Avatar
teddy
Merci pour ces précisions et en particulier pour ta réponse qui va résoudre mon
problème.
Ted


"Jean Yves SÉVENO" a écrit dans le message de news:
42e7fa72$0$22271$
Bonjour.

La propriété BackgroundPrintingStatus de l'objet Application de Word est faite
pour ça. Elle renvoie le nombre de travaux d'impression se trouvant dans la
file d'attente d'impression en arrière plan.

Il suffit donc de boucler dessus jusqu'à ce qu'elle renvoie 0. Quelque chose
comme :

If AppWord.BackgroundPrintingStatus > 0 Then
Do Until AppWord.BackgroundPrintingStatus = 0
DoEvents
Loop
End If
AppWord.Quit

Cordialement.

Jean Yves



" teddy" a écrit dans le message de news:

Oui, je clos la session trop tôt mais je ne sais pas comment évaluer ce qui
reste à imprimer.
S'il y a d'autres idées, je suis preneur...
Merci encore.
Ted


"Christian Hubert-Hugoud" a écrit dans le message de
news: %
Peut-être qu'il y a une commande/propriété qui permet de savoir si Word a
fini d'envoyer son doc à l'imprimante ?

Il me semble que tu clos trop tôt la session Word.

Christian


" teddy" a écrit dans le message de news:

Bonjour,
Voici une partie du code.
Le problème, c'est que si l'instance WORD est fermée après le PrintOut,
tous mes documents ne sont pas imprimés.
D'autre part, je ne peux la lancer qu'une fois sinon j'ai l'étrange message
"Serveur n'existe pas ou indisponible".
Qu'en pensez-vous ?


Dim AppWord As Object
Set AppWord = CreateObject("Word.Application") ' Création instance
WORD
AppWord.Visible = False ' Word non visible
AppWord.DisplayAlerts = False ' Pas de renvoi de
message WORD

Tfile = Dir(Tfolder & "*.htm") ' Capture Nom du 1er
fichier du répertoire désigné par Tfolder

Do While Tfile <> ""
AppWord.Documents.Open (Tfolder & "" & Tfile) ' Ouverture
document
ActiveDocument.Range.Font.Size = 7 ' Forçage
Taille Police
ActiveDocument.PrintOut ' Impression
document
ActiveDocument.Close
Tfile = Dir() ' Capture Nom du
fichier suivant
Loop

' Instance provisoirement laissée ouverte !!!
'MyTime = Time()
'Do While Time < DateAdd("s", 2, MyTime) ' Tempo avant
fermeture
'Loop
'AppWord.Quit
'Set AppWord = Nothing