Pb ouvrir/editer/fermer un doc dont le nom contient des espaces

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 11 sept. 2002 à 21:41
princeofamerica Messages postés 2 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 24 février 2004 - 24 févr. 2004 à 17:32
Bonsoir,

J'aimerais parcourir un répertoire et éditer automatiquement les fichiers .doc et .xls
Je bloque avec les répertoires et les noms de fichiers comportant des espaces.

En VBS, je veux ouvrir/éditer/fermer des fichiers.
Ma proc marche si je n'ai pas d'espace dans le nom du répertoire et dans le nom du fichier.

Dim Shell
Set Shell = WScript.CreateObject("WScript.Shell")

Shell.Run "c:\Partage-Jean-Marc\test jean marc.doc" 'ne s'ouvre pas car il y a des espaces
Shell.Run "c:\Partage Jean Marc\test jean marc.doc" 'ne s'ouvre pas car il y a des espaces
Shell.Run "c:\Partage-Jean-Marc\test-jean-marc.doc" 's'ouvre car il n'y a pas d' espaces

Shell.SendKeys "^p" 'Raccourci clavier de l'impression
Shell.SendKeys "{ENTER}" 'Réponse OK pour fenêtre imprimer
WScript.Sleep(5000)
Shell.SendKeys "%(ff)" 'fermeture du document
WScript.Sleep(1500)
Shell.SendKeys "%n" 'non enregistrement du document
Shell.SendKeys "%{F4}",true 'fermeture de Word

En cherchant dans le Forum, je pense qu'il faut peut-être utiliser les chemins DOS du répertoire (+sous-répertoires) et le DOS du fichier....

J'ai fait des essais avec GetAbsolutePathName pour le chemin et GetFileName pour le fichier, mais je me plante à chaque fois.

Quelqu'un peut-il m'aider ????????????

La proc ci-dessus est incomplète car j'ai rajouté For Each pour testé .doc et .xls. C'est simplement la base pour testé sur 1 document

3 réponses

leneuf22 Messages postés 156 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 4 mars 2003
13 sept. 2002 à 20:46
Pour avoir le nom DOS du fichier tu dois récrire ton code :
- soit avec les API si tu te sens (ton code sera plus rapide et efficace)
-si tu n'as pas envie de te fouler, avec FileSystemObject : (note : tu dois créer autant de f1, f2, f3, etc... que tu as de fichiers)

Dim Shell, fso, f1, f2, f3
Set Shell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.GetFile("c:\Partage-Jean-Marc\test jean marc.doc")
Set f2 = fso.GetFile("c:\Partage Jean Marc\test jean marc.doc")
Set f3 = fso.GetFile("c:\Partage-Jean-Marc\test-jean-marc.doc")

Shell.Run f1.ShortPath
Shell.Run f2.ShortPath
Shell.Run f3.ShortPath

Shell.SendKeys "^p" 'Raccourci clavier de l'impression
Shell.SendKeys "{ENTER}" 'Réponse OK pour fenêtre imprimer
WScript.Sleep(5000)
Shell.SendKeys "%(ff)" 'fermeture du document
WScript.Sleep(1500)
Shell.SendKeys "%n" 'non enregistrement du document
Shell.SendKeys "%{F4}",true 'fermeture de Word
0
princeofamerica Messages postés 2 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 24 février 2004
24 févr. 2004 à 17:32
Wesh, Le neuf22!!

merci pour les infos sur l'execution des fichiers sans espace...c vraiment cool ces sites de codes sources, ca evite des putains et des putains d'heure de recherche...
grâce a ton code source, j'ai pu savoir comment faire pour éxecuter un fichier, quelque soit l'extension et son nom depuis une boite de dialogue....
c vraiment génial et ca evite plein d'heures de tafs...merci encore!!
0
princeofamerica Messages postés 2 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 24 février 2004
24 févr. 2004 à 17:32
Wesh, Le neuf22!!

merci pour les infos sur l'execution des fichiers sans espace...c vraiment cool ces sites de codes sources, ca evite des putains et des putains d'heure de recherche...
grâce a ton code source, j'ai pu savoir comment faire pour éxecuter un fichier, quelque soit l'extension et son nom depuis une boite de dialogue....
c vraiment génial et ca evite plein d'heures de tafs...merci encore!!
0
Rejoignez-nous