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

Trouver la cible d'un raccourci dans une macro VBA

8 réponses
Avatar
arbiel
Bonjour

J'essaie d'atteindre un fichier par l'intermédiaire d'un raccourci.

Je parviens bien à utiliser les objets FIleSystemObjects. je réussis à creer
un objet File dont une propriété m'indique qu'il s'agit d'un raccourci, mais
je n'arrive pas à trouver la cible du raccourci pour atteindre le fichier qui
m'interesse.

Merci de votre aide

8 réponses

Avatar
Jacques93
arbiel a écrit :
Bonjour

J'essaie d'atteindre un fichier par l'intermédiaire d'un raccourci.

Je parviens bien à utiliser les objets FIleSystemObjects. je réussis à creer
un objet File dont une propriété m'indique qu'il s'agit d'un raccourci, mais
je n'arrive pas à trouver la cible du raccourci pour atteindre le fichier qui
m'interesse.

Merci de votre aide




Je n'ai peut être pas bien compris, mais si tu veux créer un raccourci
ne devrais tu pas plutôt utiliser la méthode CreateShortcut de l'objet
WScript :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsmthcreateshortcut.asp


--
Cordialement,

Jacques.
Avatar
arbiel
Bonjour

Merci pour votre intervention, mais je crois n'avoir pas été clair dans mon
précédent message.

Mon problème est le suivant : la macro VBA sous Word que j'écris doit être
capable de fonctionner dans des environnements différents : elle est utilisée
par plusieurs personnes qui, groupe par groupe, partagent des fichiers avec
ces deux particularités :
les fichiers sont annuels, leur nom évolue
chaque groupe utilise son propre fichier

J'ai créé un environnement de test sur mon PC, avec un fichier réel et non
un raccourci, alias ou pointeur (je ne sais pas quelle est la terminologie
réelle). J'ai introduit dans le code des constantes (répertoire et nom du
fichier) que je peux changer à loisir, mais manuellement. Je ne peux pas
proposer une telle solution aux utillisateurs qui ne connaissent et ne
veulent pas connaître VBA.

Dès le début, j'ai imaginé l'utiilisation d'un raccourci, alias, pointeur
Windows, localisé et nommé de manière identique sur tous les PC, dont le
contenu varierait avec les groupes et avec le temps, chacun étant capable de
modifier au moment opportun le raccourci lorsqu'il convient de changer de
fichier cible.

Mais voilà : je parviens bien à récupérer les informations de l'alias, mais
impossible de trouver le nom du fichier sur lequel il pointe.

Je suis un utilisateur des logiciels WIndows et non un expert en
programmation. La navigation sur le site MDSN (ou MNDS ? le site de
Microsoft, j'espère que vous voyez ce à quoi je fais référence) dépasse mes
connaissances, je ne sais pas comment m'orienter, puisque je ne sais pas sur
quelle partie du système je dois m'appuyer pour résoudre mon problème. J'ai
cru un moment que Windows Scripting Host était la solution, mais je n'en suis
plus si sûr.

Sur quel modèle objet dois-je m'appuyer ?
Quelle référence dois-je utiliser dans mon code (les exemples que j'ai
trouvés sur Windows Scripting Host mentionne une variable mshxxxx que mon
code refuse (j'utilise toujours l'option explicit pour détecter les erreurs
dès la compilation) ?


"Jacques93" a écrit :

arbiel a écrit :
> Bonjour
>
> J'essaie d'atteindre un fichier par l'intermédiaire d'un raccourci.
>
> Je parviens bien à utiliser les objets FIleSystemObjects. je réussis à creer
> un objet File dont une propriété m'indique qu'il s'agit d'un raccourci, mais
> je n'arrive pas à trouver la cible du raccourci pour atteindre le fichier qui
> m'interesse.
>
> Merci de votre aide
>

Je n'ai peut être pas bien compris, mais si tu veux créer un raccourci
ne devrais tu pas plutôt utiliser la méthode CreateShortcut de l'objet
WScript :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsmthcreateshortcut.asp


--
Cordialement,

Jacques.



Avatar
Jacques93
Bonjour arbiel,
arbiel a écrit :
Bonjour

Merci pour votre intervention, mais je crois n'avoir pas été clair dans mon
précédent message.

Mon problème est le suivant : la macro VBA sous Word que j'écris doit être
capable de fonctionner dans des environnements différents : elle est utilisée
par plusieurs personnes qui, groupe par groupe, partagent des fichiers avec
ces deux particularités :
les fichiers sont annuels, leur nom évolue
chaque groupe utilise son propre fichier

J'ai créé un environnement de test sur mon PC, avec un fichier réel et non
un raccourci, alias ou pointeur (je ne sais pas quelle est la terminologie
réelle). J'ai introduit dans le code des constantes (répertoire et nom du
fichier) que je peux changer à loisir, mais manuellement. Je ne peux pas
proposer une telle solution aux utillisateurs qui ne connaissent et ne
veulent pas connaître VBA.

Dès le début, j'ai imaginé l'utiilisation d'un raccourci, alias, pointeur
Windows, localisé et nommé de manière identique sur tous les PC, dont le
contenu varierait avec les groupes et avec le temps, chacun étant capable de
modifier au moment opportun le raccourci lorsqu'il convient de changer de
fichier cible.

Mais voilà : je parviens bien à récupérer les informations de l'alias, mais
impossible de trouver le nom du fichier sur lequel il pointe.

Je suis un utilisateur des logiciels WIndows et non un expert en
programmation. La navigation sur le site MDSN (ou MNDS ? le site de
Microsoft, j'espère que vous voyez ce à quoi je fais référence) dépasse mes
connaissances, je ne sais pas comment m'orienter, puisque je ne sais pas sur
quelle partie du système je dois m'appuyer pour résoudre mon problème. J'ai
cru un moment que Windows Scripting Host était la solution, mais je n'en suis
plus si sûr.

Sur quel modèle objet dois-je m'appuyer ?
Quelle référence dois-je utiliser dans mon code (les exemples que j'ai
trouvés sur Windows Scripting Host mentionne une variable mshxxxx que mon
code refuse (j'utilise toujours l'option explicit pour détecter les erreurs
dès la compilation) ?





Je ne suis toujours pas sur de comprendre. Tu as un raccourci qui
existe, tu connais son nom et son emplacement, et tu veux savoir sur
quoi il pointe ?

Est cela ?
--
Cordialement,

Jacques.
Avatar
arbiel
Je n'ai pu reprendre mon problème que maintenant.

Oui, c'est bien cela : j'ai un raccourci dont je connais le nom et
l'emplacement, et je cherche à savoir sur quel fichier il pointe réellement.

Merci de votre aide

"Jacques93" a écrit :

Bonjour arbiel,
arbiel a écrit :
> Bonjour
>
> Merci pour votre intervention, mais je crois n'avoir pas été clair dans mon
> précédent message.
>
> Mon problème est le suivant : la macro VBA sous Word que j'écris doit être
> capable de fonctionner dans des environnements différents : elle est utilisée
> par plusieurs personnes qui, groupe par groupe, partagent des fichiers avec
> ces deux particularités :
> les fichiers sont annuels, leur nom évolue
> chaque groupe utilise son propre fichier
>
> J'ai créé un environnement de test sur mon PC, avec un fichier réel et non
> un raccourci, alias ou pointeur (je ne sais pas quelle est la terminologie
> réelle). J'ai introduit dans le code des constantes (répertoire et nom du
> fichier) que je peux changer à loisir, mais manuellement. Je ne peux pas
> proposer une telle solution aux utillisateurs qui ne connaissent et ne
> veulent pas connaître VBA.
>
> Dès le début, j'ai imaginé l'utiilisation d'un raccourci, alias, pointeur
> Windows, localisé et nommé de manière identique sur tous les PC, dont le
> contenu varierait avec les groupes et avec le temps, chacun étant capable de
> modifier au moment opportun le raccourci lorsqu'il convient de changer de
> fichier cible.
>
> Mais voilà : je parviens bien à récupérer les informations de l'alias, mais
> impossible de trouver le nom du fichier sur lequel il pointe.
>
> Je suis un utilisateur des logiciels WIndows et non un expert en
> programmation. La navigation sur le site MDSN (ou MNDS ? le site de
> Microsoft, j'espère que vous voyez ce à quoi je fais référence) dépasse mes
> connaissances, je ne sais pas comment m'orienter, puisque je ne sais pas sur
> quelle partie du système je dois m'appuyer pour résoudre mon problème. J'ai
> cru un moment que Windows Scripting Host était la solution, mais je n'en suis
> plus si sûr.
>
> Sur quel modèle objet dois-je m'appuyer ?
> Quelle référence dois-je utiliser dans mon code (les exemples que j'ai
> trouvés sur Windows Scripting Host mentionne une variable mshxxxx que mon
> code refuse (j'utilise toujours l'option explicit pour détecter les erreurs
> dès la compilation) ?
>
>

Je ne suis toujours pas sur de comprendre. Tu as un raccourci qui
existe, tu connais son nom et son emplacement, et tu veux savoir sur
quoi il pointe ?

Est cela ?
--
Cordialement,

Jacques.



Avatar
Jacques93
Bonsoir arbiel,
arbiel a écrit :
Je n'ai pu reprendre mon problème que maintenant.



Chacun ses contraintes...

Oui, c'est bien cela : j'ai un raccourci dont je connais le nom et
l'emplacement, et je cherche à savoir sur quel fichier il pointe réellement.



Voici une macro qui liste les raccourcis du bureau en indiquant leurs
cibles :

Private Sub ListDesktopShortCuts()
Dim Sh, Lnk
Dim DesktopPath As String, lnkName As String
Dim s As String

Set Sh = CreateObject("Wscript.Shell")
DesktopPath = Sh.SpecialFolders("Desktop")
lnkName = Dir(DesktopPath & "*.*", vbNormal)
While Len(lnkName) > 0
If LCase(Right(lnkName, 4)) = ".lnk" Then
Set Lnk = Sh.CreateShortcut(DesktopPath & "" & lnkName)
s = s & lnkName & " : " & Lnk.TargetPath & vbCrLf
End If
lnkName = Dir()
Wend
MsgBox s
End Sub

Si tu connais l'emplacement et le nom du raccourci, tu dois pouvoir
adapter :

Set Sh = CreateObject("Wscript.Shell")
Set Lnk = Sh.CreateShortcut(NomChemin & "" & NomRaccourci)

Cela ne recréeras pas le raccourci, mais te renverras dans
Lnk.TargetPath la cible du raccourci existant.

Essaie d'indiquer si c'est ok avant 1 mois, ce n'est pas toujours
évident de retrouver le fil ;-)

--
Cordialement,

Jacques.
Avatar
arbiel
Bonjour

Je n'attendais pas une réponse aussi rapide !

Merci beaucoup. Tout fonctionne parfaitement.

Savez-vous où se trouve la littérature relative à "Wscript" ?

J'imagine d'après le nom qu'il s'agit de quelque chose comme "Windows
Script" et que ces modules permettent de contrôler le fonctionnement de
Windows.

Et encore une fois, mille mercis.

"Jacques93" a écrit :

Bonsoir arbiel,
arbiel a écrit :
> Je n'ai pu reprendre mon problème que maintenant.

Chacun ses contraintes...

> Oui, c'est bien cela : j'ai un raccourci dont je connais le nom et
> l'emplacement, et je cherche à savoir sur quel fichier il pointe réellement.

Voici une macro qui liste les raccourcis du bureau en indiquant leurs
cibles :

Private Sub ListDesktopShortCuts()
Dim Sh, Lnk
Dim DesktopPath As String, lnkName As String
Dim s As String

Set Sh = CreateObject("Wscript.Shell")
DesktopPath = Sh.SpecialFolders("Desktop")
lnkName = Dir(DesktopPath & "*.*", vbNormal)
While Len(lnkName) > 0
If LCase(Right(lnkName, 4)) = ".lnk" Then
Set Lnk = Sh.CreateShortcut(DesktopPath & "" & lnkName)
s = s & lnkName & " : " & Lnk.TargetPath & vbCrLf
End If
lnkName = Dir()
Wend
MsgBox s
End Sub

Si tu connais l'emplacement et le nom du raccourci, tu dois pouvoir
adapter :

Set Sh = CreateObject("Wscript.Shell")
Set Lnk = Sh.CreateShortcut(NomChemin & "" & NomRaccourci)

Cela ne recréeras pas le raccourci, mais te renverras dans
Lnk.TargetPath la cible du raccourci existant.

Essaie d'indiquer si c'est ok avant 1 mois, ce n'est pas toujours
évident de retrouver le fil ;-)

--
Cordialement,

Jacques.



Avatar
Jacques93
Bonjout arbiel,
arbiel a écrit :
Bonjour

Je n'attendais pas une réponse aussi rapide !

Merci beaucoup. Tout fonctionne parfaitement.

Savez-vous où se trouve la littérature relative à "Wscript" ?

J'imagine d'après le nom qu'il s'agit de quelque chose comme "Windows
Script" et que ces modules permettent de contrôler le fonctionnement de
Windows.




D'abord un petit "tutorial" comme sait le faire Jean-Claude Bellamy :

http://www.bellamyjc.org/fr/vbsgeneralites.html

Sinon chez Microsoft :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vbscripttoc.asp


--
Cordialement,

Jacques.
Avatar
arbiel
Merci beaucoup pour ces informations.

Et transmettez aussi mes remerciements à Jean-Claude Bellamy

"Jacques93" a écrit :

Bonjout arbiel,
arbiel a écrit :
> Bonjour
>
> Je n'attendais pas une réponse aussi rapide !
>
> Merci beaucoup. Tout fonctionne parfaitement.
>
> Savez-vous où se trouve la littérature relative à "Wscript" ?
>
> J'imagine d'après le nom qu'il s'agit de quelque chose comme "Windows
> Script" et que ces modules permettent de contrôler le fonctionnement de
> Windows.
>

D'abord un petit "tutorial" comme sait le faire Jean-Claude Bellamy :

http://www.bellamyjc.org/fr/vbsgeneralites.html

Sinon chez Microsoft :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vbscripttoc.asp


--
Cordialement,

Jacques.