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
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".
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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.
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
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
On 10 avr, 21:05, MC <XX.X...@XX.XmclaveauX.com> 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
???
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
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... }
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...
}
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
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
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()