2010-12-15 68 views
0

Je portage une VBA à partir d'Excel 2003 (Windows XP) pour Excel 2004 (OS X). Excel 2004 contient un interpréteur VBA qui vous permet de transférer certaines commandes sur Applescript à l'aide de la fonction MacScript().Impossibilité d'utiliser "chemin POSIX" en passant une commande Applescript via la fonction "MacScript" de VBA

Tout cela est très bien pour ce que je veux faire (lancer des fichiers dans leur application par défaut, quelque chose qui, sur la version Windows, utilise un appel API et est évidemment incompatible avec la version Mac). Le code que je utilise pour générer le Applescript est en tant que tel:

sScript = "set filepath to POSIX path of """ & path & """" & Chr(13) 
sScript = sScript & "try" & Chr(13) 
sScript = sScript & "set command to ""open "" & quoted form of filepath" & Chr(13) 
sScript = sScript & "do shell script command" & Chr(13) 
sScript = sScript & "end try" 
MacScript(sScript) 

Maintenant, tout ce que je l'ai fait et lu me dit que cela devrait fonctionner. Cela fonctionne quand je l'exécute à partir de l'éditeur Applescript. Et pourtant, ça échoue toujours, quoi qu'il arrive. Et ce qui manque clairement, c'est la partie "POSIX path". Il lance une erreur générique 5, "Appel ou argument de procédure invalide", ce qui n'est pas très éclairant.

Cela semble plutôt indispensable à son fonctionnement, et je l'ai trouvé des preuves que zéro autres personnes ont eu ce trouble devant moi. Cela me rend fou. Le "chemin POSIX" semble être une partie standard de la définition d'Applescript, mais il échoue toujours ici. (Il convertit le fichier Macintosh HD: Utilisateurs: MyUserName: Blah/Users/NomUtilisateur/Blah.)

Quelqu'un at-il des suggestions? Je pense que je vais juste besoin d'écrire ma propre fonction de chemin POSIX dans VBA pour le faire fonctionner avec ce code, si la fonction MacScript() refuse de le faire tout seul. Mais je me méfie de l'analyse des chaînes et etc. concernant une fonction que je ne comprends qu'à moitié (le cas ci-dessus est facile, évidemment, mais je ne sais pas à quel point cela peut être compliqué).

Répondre

2

Vous n'êtes pas obligé de le faire en utilisant une commande shell et peut alors éviter d'utiliser « chemin posix ». Essayez ceci ...

tell application "Finder" to open file path 
+0

OK, ça marche! – grupo