Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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?

4 réponses
Avatar
num_gg
Chers pros du scripting windows

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

Set objWord =3D CreateObject("Word.Application")
Set objDoc =3D objWord.Documents.Open("Z:\MyFolder\MyFile.doc")
objDoc.PrintOut()
objDoc.Saved =3D TRUE
objWord.Quit

Ayant param=E9tr=E9 mon printer par d=E9faut =E0 "Adobe PDF" (j'ai install=
=E9
Abobe Acrobat 7.0) afin de g=E9n=E9rer automatiquement mon fichier PDF
"MyFile.pdf" dans mon r=E9pertoire "Z:\MyFolder\", ce script g=E9n=E8re,
apr=E8s 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=E9pertoire sans le demander =E0
l'utilisateur.

Donc, quand je lance mon petit script, une fen=EAtre 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, =E0 terme, de l'ordre de
5000 fichiers pdf =E0 g=E9n=E9rer et =E0 la longue, je risque d'y passer la
(plusieurs) nuit(s) :(

D'o=F9 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=E9lectionn=E9
par d=E9faut en cas d'apparition d'une ou plusieurs fen=EAtre(s) de
confirmation ou autre message d'avertissement?

Le but =E9tant (vous l'aurez devin=E9) de faire un script qui it=E9rerait
sur mes Xmille fichiers .doc en "cliquant en aveugle automatiquement".

Un grand merci par avance...

num GG

4 réponses

Avatar
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
Avatar
num_gg
On 10 avr, 21:05, MC wrote:
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

Avatar
num_gg
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...
}
Avatar
Michel Claveau
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