Aller au contenu

Ouvrir un fichier (Word, PDF ou autre)


Vincent P.

Messages recommandés

Bonjour bonjour,

 

Je viens vous embêter car je me confronte à un problème que je ne comprend pas.

J'ai fait quelque LISP que j'ai mis à disposition de mes collègues de travaille, le tous rangé dans un menu déroulant, et j'ai fait un fichier sous Word donnant le explications de fonctionnement de chaque commandes. (certain étant à l'aise dans leur routine sont peut ouvert au nouveau).

Je me suis dit pour faire simple que j'allais faire une commande à la fin de mon menu déroulant qui ouvrirais cette aide (plus besoin de la chercher sur le serveur de la boite).

 

Et là, tous vas bien, j'ai fait un PDF pour qu'il n'y est pas de bêtises de faites, et bam :

(startapp "C:\\Program Files (x86)\\Adobe\\Acrobat Reader DC\\Reader\\AcroRd32.exe" "M:\\FR\\***********\\Lisp\\Aide-Lisp.pdf")

(j'ai changé une partie du lien sur le serveur par quelque * pour plus de confidentialité)

Et ca fonctionne !!
Sur mon PC ca marche super bien ... Mais que sur mon PC ...
Chez mes collègues la fonction STARTAPP renvoi nil et donc n'ouvre aucun fichier ...

Et je sais pas pourquoi.
On a la même version de Acrobat (même lien pour l'appli) ils ont aussi accès au PDF sur le serveur.

Quelqu'un à une piste ?
Il y a ptet moyen pour simplifier le choix du logiciel ?

 

Des bisous distancielle 

Vinent P.

Lispeur débutant!
Autocad Map3D 2023
Covadis-Autopist 18.0C

Lien vers le commentaire
Partager sur d’autres sites

peut etre que tes collegue n'ont pas

"C:\\Program Files (x86)\\Adobe\\Acrobat Reader DC\\Reader\\AcroRd32.exe"

au meme endroit toi ?

Du coup en vba, tu n'a pas besoin de "déclarer" le logiciel à l'ouverture c'est plus simple d'utilisation : ça ouvre avec le programme par défault de windows

 

'MonFichier est le chemin complet du fichier à ouvrir !

Public Function OuvrirFichier(MonFichier As String)
   Dim MonApplication As Object
   Set MonApplication = CreateObject("Shell.Application")
    MonApplication.Open (MonFichier)
   Set MonApplication = Nothing
Exit Function

End Function

Je conseil juste de vérifier que le fichier existe avant au cas où ^^

Lien vers le commentaire
Partager sur d’autres sites

Salut,

On parle bien de LISP ?

Pour ouvrir un fichier avec l'application par défaut en spécifiant le chemin complet ou juste le nom du fichier s'il est dans les chemins de recherche (avec gestion d'erreur).

(defun OpenFileWithDefaultApp (filename / shellApp)
  (and
    (setq filename (findfile filename))
    (setq shellApp (vlax-create-object "Shell.Application"))
    (vl-catch-all-apply 'vlax-invoke (list shellApp 'Open filename))
    (vlax-release-object shellApp)
  )
)

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Coucou,

Peut-être n'ont-ils pas les mêmes droits d'accès au fichier sur ton serveur. J'ai essayé vite fait sur mon PC et bien que je puisse ouvrir les fichiers PDF sur mon serveur, lorsque j'utilise StartApp j'ai une erreur pour "Accès refusé" au document... >w<
Par contre, StartApp renvoi 33 et non nil, donc le soucis est sûrement différent..

D'un point de vu programmation, cela me semble correct donc le problème ne peut venir que des droits d'accès au fichier (ou éventuellement tu peux essayer d'ajouter le chemin d'accès à ton fichier dans les chemins de supprt approuvé) ?

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

@Curlygoth j'ai vérifié chez 3 collègues qui ont bien le même .exe au même endroit. Et le VBA je ne m'y suis jamais penché donc ton code est bien obscure à mes yeux 🤯

@Luna Ils ont bien accès au fichier PDF que je pointe (qui existe bien sur le serveur), il est dans un dossier de travaille qu'on utilise tous.

@(gile) C'est bien en Lisp que je cherche ma solution, et ton code comble mes attentes! 

Pour gérer une éventuelle absence du fichier, j'ai ajouter un IF devant (setq filename (findfile filename)), s'il renvoi nill j'ouvre une pop-up avec (alert), s'il renvoi le chemin du fichier (donc il existe bien), je poursuit le programme.

Petite question, à quoi set le (and) en ligne 2? Hormis renvoyer nil en fin de commande, je ne vois pas l'intérêt ...?

 

Merci à vous trois pour l'aide 😄 

Lispeur débutant!
Autocad Map3D 2023
Covadis-Autopist 18.0C

Lien vers le commentaire
Partager sur d’autres sites

Coucou,

Le (and) est une manière détournée de stopper le programme au moindre retour de nil sur l'une des lignes suivantes. Cela permet de s'assurer que le programme est arrivé jusqu'au bout (le (and) renvoie T dans ce cas) ou s'il a échoué à un endroit (le (and) renvoie nil, et sans évaluer les lignes suivantes, évitant ainsi une erreur !).

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité