A l'excution d'un script et à l'apparition d'un message de confirmation: comment faire en sorte de cliquer "automatiquement" sur le bouton par défaut?

Le
num_gg
Chers pros du scripting windows

J'ai ici un script on ne peut plus simple:

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("Z:MyFolderMyFile.doc")
objDoc.PrintOut()
objDoc.Saved = TRUE
objWord.Quit

Ayant paramétré mon printer par défaut à "Adobe PDF" (j'ai install=
é
Abobe Acrobat 7.0) afin de générer automatiquement mon fichier PDF
"MyFile.pdf" dans mon répertoire "Z:MyFolder", ce script génère,
après affichage de confirmation du nouveau nom de fichier, un beau pdf
tout neuf sur le dossier "Z:MyFolder"

Tout baigne sauf que, il n'y a semble-t-il aucun moyen de configurer
ce f driver d'impression virtuel "Adobe PDF" pour lui dire de ne
jamais se soucier du nom de fichier et de sauvegarder le nouveau pdf
sous "Myfile.pdf" dans le répertoire sans le demander à
l'utilisateur.

Donc, quand je lance mon petit script, une fenêtre window apparait
pour faire confirmer que le nouveau nom de fichier du pdf sera bien
"MyFile.pdf". Ca va 5 mn mais je vais avoir, à terme, de l'ordre de
5000 fichiers pdf à générer et à la longue, je risque d'y passer la
(plusieurs) nuit(s) :(

D'où ma question:
Il y a-t-il un moyen de lancer un script vbs (ou wsh) de ce genre en
lui indiquant de cliquer "automatiquement" sur le bouton sélectionné
par défaut en cas d'apparition d'une ou plusieurs fenêtre(s) de
confirmation ou autre message d'avertissement?

Le but étant (vous l'aurez deviné) de faire un script qui itérerait
sur mes Xmille fichiers .doc en "cliquant en aveugle automatiquement".

Un grand merci par avance

num GG
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MC
Le #657805
Bonsoir !

Sans vouloir particulièrement critiquer Adaube, pour le même genre de
problème, j'utilise PDF-creator.
L'avantage, c'est que PDF-creator est pilotable par COM, ce qui permet
de solutionner ce genre de problème.
Par exemple, j'utilise ça pour imprimer des bulletins de salaires, en
utilisant comme nom du fichier le matricule.

Une autre solution, avec PDF-creator, c'est d'utiliser le numéroteur de
fichiers intégré, et de renommer ultérieurement les fichiers.

Autre possibilité : passer à XPS (solution de Microsoft, installée avec
IE-7).

Enfin, si Acrobat-writer est incontournable, il est possible d'envoyer
un sendkeys ou de cliquer automatiquement avec la souris.

--
@-salutations

Michel Claveau
num_gg
Le #661080
On 10 avr, 21:05, MC
Bonsoir !

Sans vouloir particulièrement critiquer Adaube, pour le même genre de
problème, j'utilise PDF-creator.
L'avantage, c'est que PDF-creator est pilotable par COM, ce qui permet
de solutionner ce genre de problème.
Par exemple, j'utilise ça pour imprimer des bulletins de salaires, en
utilisant comme nom du fichier le matricule.

Une autre solution, avec PDF-creator, c'est d'utiliser le numéroteur de
fichiers intégré, et de renommer ultérieurement les fichiers.

Autre possibilité : passer à XPS (solution de Microsoft, installée avec
IE-7).

Enfin, si Acrobat-writer est incontournable, il est possible d'envoyer
un sendkeys ou de cliquer automatiquement avec la souris.

--
@-salutations

Michel Claveau


Merci Michel pour tes pistes, mais peux-tu en dire plus?

1- Je connais PDF creator mais il a des problèmes pour traiter les
fichiers avec des noms très longs du genre ("Ceci est un nom de
fichier. très long vraiment difficile à traiter... pour PDF
Créator.. .doc") J'exagère mais pour certains noms de fichiers c'est
un peu ça (y compris la série de "..." et les caractères accentués.
Mais quand tu dis "PDF-creator est pilotable par COM" peux tu me
montrer un bout de code? (VB ou (mieux) .NET/C# ?)

2-"numéroteur de fichiers intégré": idem Où cela se configure-t-il? et
je ne vois pas très bien en quoi cela peut m'aider? (Je ne peux pas
changer les noms des fichiers. Aussi "exotiques" soient-ils! :( )

3- Pour le "sendkey": J'ai essayé mais pourrais-tu m'indiquer comment
et où l'intégrer dans mon exemple?
???
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("Z:MyFolderMyFile.doc")
objDoc.PrintOut()
objDoc.Saved = TRUE
objWord.Quit
???

Merci pour ton aide

Num

num_gg
Le #660802
Bon, afin de clore ce thread, j'ai adopté ce qui suit comme solution
de contournement:

1°/ "Adobe PDF" comme default printer,
2°/ "Adobe PDF" configuré pour produire ses PDFs toujours dans le même
rep (ex:c:TempPDF)
3°/ une routine C#.NET pour lancer l'impression virtuelle de tous mes
fichiers office d'un rep donné (ex: Z:MyFolder) ce qui génére, comme
attendu les PDF dans c:TempPDF.
4°/ lorsque tous les pdf ont été générés, ils sont simplement
déplacés par programmation (toujours dans la routine c#.net) vers le
répertoire d'origine Z:MyFolder où je veux avoir mes fichiers
générés.
5°/ De cette manière, je peux itérer avec ma routine sur tous les rep
que je veux et obtenir mes pdfs partout où je le souhaite.

Certes, ça ne casse pas des briques, mais ça répond à mon besoin... :)

Merci à tous pour votre aide

Num

PS: Pour le point 3°/ voici la partie clé du code de la routine où
l'on lance l'impression virtuelle afin d'avoir les fichiers pdf (étant
acquis les points 1°/ et 2°/):

for (int i = 0; i < lstFilesFound.SelectedItems.Count; i++)
{
object fileName = lstFilesFound.SelectedItems[i];
string sFullFileName = (string)fileName;
ProcessStartInfo psi = new ProcessStartInfo();
psi.Verb = "print";
psi.CreateNoWindow = false;
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.FileName = sFullFileName;
psi.UseShellExecute = true;
Process.Start(psi);
// Then follows some logging and exception handling stuff...
}
Michel Claveau
Le #660276
Bonjour !

Désolé, j'étais en vacances...

1- PDF creator ... peux tu me montrer un bout de code
Une fois PDFcreator installé, il y a un sous-répertoire "script".


2-"numéroteur de fichiers intégré": idem Où cela se configure-t-il?


Icone PDFcreator ; menu "Imprimante" + "Options" ; voir à
enregistrement_automatique.

3- Pour le "sendkey"/"clic": comment?


Pour ce genre de choses, j'utilise AutoIt, et notamment WinExists() et
ControlClick()





--
@-salutations

Michel Claveau

Publicité
Poster une réponse
Anonyme