OVH Cloud OVH Cloud

Appel applic externe depuis mdb Access

6 réponses
Avatar
Dussart
Dans une base de donn=E9es, lorsqu'un document=20
(.doc, .xls, .txt ou .pdf) est disponible pour un=20
enregistrement d=E9termin=E9, je souhaite pouvoir le lire=20
lorsque l'utilisateur appuye sur le bouton "Voir Document".
Dans cette base, il y a 3 champs qui permettent de savoir=20
de quel type de document il s'agit, comment il s'appelle=20
et o=F9 il se trouve. L'affichage du document se fait =E0=20
l'aide de la commande "Shell()".
Cela fonctionne bien, sauf quand il y a un (ou des)=20
espaces dans le chemin et/ou le nom du fichier-document.=20
Dans ce cas, il tronque le tout =E0 partir du 1er espace=20
trouv=E9.
Quelqu'un a-t-il une solution pour d=E9tourner ce probl=E8me?
Merci d'avance.
Luc

6 réponses

Avatar
Denis Taglia
Bonjour,
Et pourquoi pas comme ça
Sub openWd()
Dim myWd As Object
Set myWd = GetObject("C:bureau chelp workshop.doc")
myWd.Application.Visible = True
Set myWd = Nothing
End Sub
Avec ou sans espace officeXP et 2000 je pense aussi.
Denis

"Dussart" a écrit dans le message de
news:00f801c38dac$8466d950$
Dans une base de données, lorsqu'un document
(.doc, .xls, .txt ou .pdf) est disponible pour un
enregistrement déterminé, je souhaite pouvoir le lire
lorsque l'utilisateur appuye sur le bouton "Voir Document".
Dans cette base, il y a 3 champs qui permettent de savoir
de quel type de document il s'agit, comment il s'appelle
et où il se trouve. L'affichage du document se fait à
l'aide de la commande "Shell()".
Cela fonctionne bien, sauf quand il y a un (ou des)
espaces dans le chemin et/ou le nom du fichier-document.
Dans ce cas, il tronque le tout à partir du 1er espace
trouvé.
Quelqu'un a-t-il une solution pour détourner ce problème?
Merci d'avance.
Luc
Avatar
Dussart
Voici les tests que j'ai fait.
1.- Dans un répertoire d:exe, j'ai placé un "shortcut"
vers winword.exe
2.-J'ai défini les répertoires suivants :
a)D:A
b)D:A B
3.-Dans chacun de ces répertoires, j'ai enregistré les
documents ".doc" suivants :
a)A.doc
b)A B.doc
4.-Dans la procédure ACCESS, j'ai défini :
Nom_Document = soit "A.doc", soit "A B.doc" (résultat d'un
Dlookup, vérifié par un Msgbox du résultat)
Chemin_Accès = soit "D:A", soit "D:A B" (lui aussi
issu d'un Dlookup)
La commande Shell est écrite avec ces 2 "items";
5.-Seul le Shell à "D:Exewinword.exe D:AA.doc"
(contrôlé par un Msgbox lui-aussi!)fonctionne tous les
autres, à savoir :
"D:Exewinword.exe D:AA B.doc";
"D:Exewinword.exe D:A BA.doc"
"D:Exewinword.exe D:A BA B.doc"
donnent un message "File not found".

C'est donc bien la présence d'un espace dans la commande
qui cause un problème.
Je ne vois vraiment pas comment résoudre ce problème.
Je ne peux quand même pas interdire les "long file names"
dans mon application!!!???

Merci pour ton aide
Luc

-----Message d'origine-----
Bonjour,

Mettre l'argument fourni à la commande Shell entre
guillemets.

Si NomDossier = "Mes documents"
NomFichier = "mon document"
Extension = ".doc"

Shell("""" & NomDossier & "" & NomFichier & Extension
& """")

Ca aide?
Cordialement.
.



Avatar
Raymond
Bonsoir.

je vais en rajouter un peu en te disant que tu peux lancer l'exécution d'un
fichier grâce à son extension sans savoir quel est le programme exe qui le
gère. tu peux lire le fiche:
http://access.seneque.free.fr/executer_selon_ext.htm
Cette API permet d'exécuter un fichier en fonction de son extension. Vous
n'avez pas besoin de connaître l'application pour lancer l'exécution, il
suffit que cette extension soit répertoriée dans Windows. Pour ouvrir un
fichier Excel il suffit de lancer le classeur et l'extension Xls permettra
de lancer Excel.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Dussart" a écrit dans le message de
news:00f801c38dac$8466d950$
Dans une base de données, lorsqu'un document
(.doc, .xls, .txt ou .pdf) est disponible pour un
enregistrement déterminé, je souhaite pouvoir le lire
lorsque l'utilisateur appuye sur le bouton "Voir Document".
Dans cette base, il y a 3 champs qui permettent de savoir
de quel type de document il s'agit, comment il s'appelle
et où il se trouve. L'affichage du document se fait à
l'aide de la commande "Shell()".
Cela fonctionne bien, sauf quand il y a un (ou des)
espaces dans le chemin et/ou le nom du fichier-document.
Dans ce cas, il tronque le tout à partir du 1er espace
trouvé.
Quelqu'un a-t-il une solution pour détourner ce problème?
Merci d'avance.
Luc
Avatar
Xavier HUE
Bonjour,

Mon exemple ne prenait pas en compte l'exécutable devant
gérer le document.
Comme l'explique raymond, normalement, on doit pouvoir
s'en passer. Si l'application est correctement installé,
Windows saura la lancer. De plus, si les applications ne
sont pas installées de la même façon sur tout les postes
de travail, c'est plnatge assuré.

Ceci étant, si tu tiens à spécifier l'application et le
document dans la commande Shell, le principe reste le même.
Entourer le nom complet de l'application par des
guillemets, et faire de même avec le nom du document.

Tu peux t'inspirer de raccourcis existant sur ton bureau.
En reprenant ton exemple:

Si NomDossier = "D:A"
NomFichier = "A B"
Extension = ".doc"

NomProgramme = "D:exeWinWord.exe"

shell """" & NomProg & " "" """ & NomDossier &
NomFichier & """"

Testé et approuvé avec les valeurs suivantes:

NomProg = "C:Program FilesMicrosoft OfficeOffice10
WinWord.exe"
NomDossier = "C:Documents and SettingsxhueMes
documents"
NomFichier = "Produits_F&L_CréationOrigineProduit.doc"

Ok?
Cordialement.
Avatar
dussart
Merci.
Avec le code trouvé à l'adresse indiquée j'ai pu résoudre
mon problème et, de plus, cela m'a permis de découvrir le
site "seneque".

-----Message d'origine-----
Bonsoir.

je vais en rajouter un peu en te disant que tu peux
lancer l'exécution d'un

fichier grâce à son extension sans savoir quel est le
programme exe qui le

gère. tu peux lire le fiche:
http://access.seneque.free.fr/executer_selon_ext.htm
Cette API permet d'exécuter un fichier en fonction de son
extension. Vous

n'avez pas besoin de connaître l'application pour lancer
l'exécution, il

suffit que cette extension soit répertoriée dans Windows.
Pour ouvrir un

fichier Excel il suffit de lancer le classeur et
l'extension Xls permettra

de lancer Excel.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Dussart" a écrit dans le
message de

news:00f801c38dac$8466d950$
Dans une base de données, lorsqu'un document
(.doc, .xls, .txt ou .pdf) est disponible pour un
enregistrement déterminé, je souhaite pouvoir le lire
lorsque l'utilisateur appuye sur le bouton "Voir
Document".

Dans cette base, il y a 3 champs qui permettent de savoir
de quel type de document il s'agit, comment il s'appelle
et où il se trouve. L'affichage du document se fait à
l'aide de la commande "Shell()".
Cela fonctionne bien, sauf quand il y a un (ou des)
espaces dans le chemin et/ou le nom du fichier-document.
Dans ce cas, il tronque le tout à partir du 1er espace
trouvé.
Quelqu'un a-t-il une solution pour détourner ce problème?
Merci d'avance.
Luc

.



Avatar
Raymond
Bonsoir.

Attention seneque.com et seneque.fr ne sont pas mes sites personnels.
D'ailleurs je trouve que c'est une usurpation de nom car le site n'a rien à
voir avec mon illustre ancêtre.

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"dussart" a écrit dans le message de
news:005e01c38f4b$9a88ed90$
Merci.
Avec le code trouvé à l'adresse indiquée j'ai pu résoudre
mon problème et, de plus, cela m'a permis de découvrir le
site "seneque".