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

Macro pour provoquer l'ouverture d'un fichier Word déjà existant.

10 réponses
Avatar
Laurent
Bonjour à tous,

Est-ce que quelqu'un pourrait me faire une macro (sous Excel bien sûr) qui
déclenche l'ouverture d'un fichier word (exemple: toto.doc) situé dans "mes
documents"?

Merci de votre aide.


Laurent Charrais

10 réponses

Avatar
Oliv'
Laurent que je salut a écrit dans
%
Bonjour à tous,

Est-ce que quelqu'un pourrait me faire une macro (sous Excel bien
sûr) qui déclenche l'ouverture d'un fichier word (exemple: toto.doc)
situé dans "mes documents"?

Merci de votre aide.


Laurent Charrais


Call Shell("Winword.exe monpcmonpartagemondoc.doc", 3)
tu devrais réussir avec cet exemple
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Avatar
ChrisV
Bonjour Laurent,

fichier word (exemple: toto.doc) situé dans "mes
documents"?


Le chemin vers "Mes documents" dépends du système d'exploitation... ne
sachant pas sur lequel tu bosses, toto.doc est ici situé à la racine du
disque...

Sub ouvWd()
Dim idT As Double
idT = Shell _
("C:Program FilesMicrosoft OfficeOffice10Winword.EXE C:toto.doc", 1)
AppActivate idT
End Sub


ChrisV


"Laurent" a écrit dans le message de news:
%
Bonjour à tous,

Est-ce que quelqu'un pourrait me faire une macro (sous Excel bien sûr) qui
déclenche l'ouverture d'un fichier word (exemple: toto.doc) situé dans
"mes
documents"?

Merci de votre aide.


Laurent Charrais




Avatar
Jacques93
Bonjour Laurent,

Pour récupérer le chemin de 'Mes document' quelque soit l'OS et
l'utilisateur, on, peut utiliser l'API SHGetFolderPath :


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shgetfolderpath.asp

==================================================== Private Declare Function SHGetFolderPath Lib "shfolder.dll" _
Alias "SHGetFolderPathA" _
(ByVal hwndOwner As Long, _
ByVal nFolder As Long, _
ByVal hToken As Long, _
ByVal dwReserved As Long, _
ByVal lpszPath As String) As Long

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Private Sub CommandButton1_Click()
Dim fName As String
Const SW_SHOWMAXIMIZED = 3

fName = GetMyDocPath & "toto.doc"
ShellExecute 0&, "open", fName, 0&, 0&, SW_SHOWMAXIMIZED
End Sub

Private Function GetMyDocPath() As String
Const CSIDL_PERSONAL = &H5
Const SHGFP_TYPE_CURRENT = &H0
Const MAX_LENGTH = 260

Dim MyDocPath As String

MyDocPath = Space(MAX_LENGTH)
If SHGetFolderPath(0&, CSIDL_PERSONAL, -1, _
SHGFP_TYPE_CURRENT, MyDocPath) = 0 Then
MyDocPath = Left(MyDocPath, InStr(MyDocPath, Chr$(0)) - 1)
End If
GetMyDocPath = MyDocPath
End Function

Bonjour à tous,

Est-ce que quelqu'un pourrait me faire une macro (sous Excel bien sûr) qui
déclenche l'ouverture d'un fichier word (exemple: toto.doc) situé dans "mes
documents"?

Merci de votre aide.


Laurent Charrais





--
Cordialement,

Jacques.

Avatar
Laurent
Oliv',

Merci de ta réponse ( à tous les autres aussi ;-) ),

Seulement avec mon chemin
Call Shell("Winword.exe C:Documents and SettingslcharraisMy
DocumentsCourrierExtraction Code Postal Client BMcourrier_enveloppe.doc",
3)
eh bien malheureusement cela ne fonctionne pas. Snif

du coup j'ai essayé plus simple avec
Call Shell("Winword.exe C:mondoc.doc", 3)
et là cela fonctionne. Comment faire en sorte que cela fonctionne avec mon
chemin?

Question: le 3 dans la macro correspond à quoi???

Encore merci de ton et de votre aide.

P.S: Mon système d'exploitation est Win2000


J'ai testé avec un fichier à la racine
"Oliv'" <(supprimerceci) a écrit dans le
message de news: #

Laurent que je salut a écrit dans
%
Bonjour à tous,

Est-ce que quelqu'un pourrait me faire une macro (sous Excel bien
sûr) qui déclenche l'ouverture d'un fichier word (exemple: toto.doc)
situé dans "mes documents"?

Merci de votre aide.


Laurent Charrais


Call Shell("Winword.exe monpcmonpartagemondoc.doc", 3)
tu devrais réussir avec cet exemple
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~





Avatar
Laurent
ChrisV,

J'ai testé ta macro avec

Sub OuvWd()
Dim idT As Double
idT = Shell("C:Program FilesMicrosoft OfficeOfficeWINWORD.EXE
C:Documents and SettingslcharraisMy DocumentsCourrierExtraction Code
Postal Client BMcourrier_enveloppe.doc", 1)
AppActivate idT
End Sub

J'espère ne pas avoir fait de faute de saisie sous Excel.

J'ai Word qui s'ouvre avec une fenêtre en premier plan me disant:

Impossible d'ouvrir le document
Essayez les opérations suivantes:
* dans le menu fichier, cliquez sur Ouvrir pour ouvrir le document/
* vérifiez que le document possède une extension .doc

avec un bouton OK


J'ai comme l'impression que c'est à cause des "espaces" que cela pose
problème car au panneau suivant l'ordi me dit qu'il ne trouve pas le fichier
Settinglcharraismy et c'est tout. pas la suite du chemin.


Cordialement Laurent


"ChrisV" a écrit dans le message de news:

Bonjour Laurent,

fichier word (exemple: toto.doc) situé dans "mes
documents"?


Le chemin vers "Mes documents" dépends du système d'exploitation... ne
sachant pas sur lequel tu bosses, toto.doc est ici situé à la racine du
disque...

Sub ouvWd()
Dim idT As Double
idT = Shell _
("C:Program FilesMicrosoft OfficeOffice10Winword.EXE C:toto.doc", 1)
AppActivate idT
End Sub


ChrisV


"Laurent" a écrit dans le message de news:
%
Bonjour à tous,

Est-ce que quelqu'un pourrait me faire une macro (sous Excel bien sûr)
qui


déclenche l'ouverture d'un fichier word (exemple: toto.doc) situé dans
"mes
documents"?

Merci de votre aide.


Laurent Charrais








Avatar
Oliv'
Laurent que je salut a écrit dans
%
Oliv',

Merci de ta réponse ( à tous les autres aussi ;-) ),

Seulement avec mon chemin
Call Shell("Winword.exe C:Documents and SettingslcharraisMy
DocumentsCourrierExtraction Code Postal Client
BMcourrier_enveloppe.doc", 3)
eh bien malheureusement cela ne fonctionne pas. Snif

du coup j'ai essayé plus simple avec
Call Shell("Winword.exe C:mondoc.doc", 3)
et là cela fonctionne. Comment faire en sorte que cela fonctionne
avec mon chemin?

Question: le 3 dans la macro correspond à quoi???

Encore merci de ton et de votre aide.

P.S: Mon système d'exploitation est Win2000


J'ai testé avec un fichier à la racine
A mes bien sûr il faut mettre des guillemets quand y a des espaces et même

les doubler ;-)))

Donc sur la même ligne bien sûr :
Call Shell("Winword.exe ""C:Documents and SettingslcharraisMy
DocumentsCourrierExtraction Code Postal Client
BMcourrier_enveloppe.doc""", 3)

3 c'est le type d'affichage ici agrandie
selectionne shell dans VBE et appuie sur F1

Tu n'as pas besoin de mettre le chemin complet de l'executable de word
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


"Oliv'" <(supprimerceci) a écrit dans le
message de news: #

Laurent que je salut a écrit dans
%
Bonjour à tous,

Est-ce que quelqu'un pourrait me faire une macro (sous Excel bien
sûr) qui déclenche l'ouverture d'un fichier word (exemple: toto.doc)
situé dans "mes documents"?

Merci de votre aide.


Laurent Charrais


Call Shell("Winword.exe monpcmonpartagemondoc.doc", 3)
tu devrais réussir avec cet exemple
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~





Avatar
Laurent
Oliv' t'es great ! ! !

Tout fonctionne c'est super cool.
Merci de ton aide je vais gagner quelques secondes tous les jours grâce à
toi.

Peut être à un autre Post.


Laurent. :-)




"Oliv'" <(supprimerceci) a écrit dans le
message de news: #

Laurent que je salut a écrit dans
%
Oliv',

Merci de ta réponse ( à tous les autres aussi ;-) ),

Seulement avec mon chemin
Call Shell("Winword.exe C:Documents and SettingslcharraisMy
DocumentsCourrierExtraction Code Postal Client
BMcourrier_enveloppe.doc", 3)
eh bien malheureusement cela ne fonctionne pas. Snif

du coup j'ai essayé plus simple avec
Call Shell("Winword.exe C:mondoc.doc", 3)
et là cela fonctionne. Comment faire en sorte que cela fonctionne
avec mon chemin?

Question: le 3 dans la macro correspond à quoi???

Encore merci de ton et de votre aide.

P.S: Mon système d'exploitation est Win2000


J'ai testé avec un fichier à la racine
A mes bien sûr il faut mettre des guillemets quand y a des espaces et même

les doubler ;-)))

Donc sur la même ligne bien sûr :
Call Shell("Winword.exe ""C:Documents and SettingslcharraisMy
DocumentsCourrierExtraction Code Postal Client
BMcourrier_enveloppe.doc""", 3)

3 c'est le type d'affichage ici agrandie
selectionne shell dans VBE et appuie sur F1

Tu n'as pas besoin de mettre le chemin complet de l'executable de word
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


"Oliv'" <(supprimerceci) a écrit dans le
message de news: #

Laurent que je salut a écrit dans
%
Bonjour à tous,

Est-ce que quelqu'un pourrait me faire une macro (sous Excel bien
sûr) qui déclenche l'ouverture d'un fichier word (exemple: toto.doc)
situé dans "mes documents"?

Merci de votre aide.


Laurent Charrais


Call Shell("Winword.exe monpcmonpartagemondoc.doc", 3)
tu devrais réussir avec cet exemple
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~









Avatar
Laurent.C
Merci de ta macro Jacques.

Elle est super précise et adaptative. Oliv' a pu m'aider avec moins de
lignes. je te remercie néanmoins de ton aide. En plus je suis encore un peu
trop newbie pour comprendre en détail ta macro.

Laurent.


"Jacques93" a écrit dans le message de
news:
Bonjour Laurent,

Pour récupérer le chemin de 'Mes document' quelque soit l'OS et
l'utilisateur, on, peut utiliser l'API SHGetFolderPath :



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/pla

tform/shell/reference/functions/shgetfolderpath.asp

==================================================== > Private Declare Function SHGetFolderPath Lib "shfolder.dll" _
Alias "SHGetFolderPathA" _
(ByVal hwndOwner As Long, _
ByVal nFolder As Long, _
ByVal hToken As Long, _
ByVal dwReserved As Long, _
ByVal lpszPath As String) As Long

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Private Sub CommandButton1_Click()
Dim fName As String
Const SW_SHOWMAXIMIZED = 3

fName = GetMyDocPath & "toto.doc"
ShellExecute 0&, "open", fName, 0&, 0&, SW_SHOWMAXIMIZED
End Sub

Private Function GetMyDocPath() As String
Const CSIDL_PERSONAL = &H5
Const SHGFP_TYPE_CURRENT = &H0
Const MAX_LENGTH = 260

Dim MyDocPath As String

MyDocPath = Space(MAX_LENGTH)
If SHGetFolderPath(0&, CSIDL_PERSONAL, -1, _
SHGFP_TYPE_CURRENT, MyDocPath) = 0 Then
MyDocPath = Left(MyDocPath, InStr(MyDocPath, Chr$(0)) - 1)
End If
GetMyDocPath = MyDocPath
End Function

Bonjour à tous,

Est-ce que quelqu'un pourrait me faire une macro (sous Excel bien sûr)
qui


déclenche l'ouverture d'un fichier word (exemple: toto.doc) situé dans
"mes


documents"?

Merci de votre aide.


Laurent Charrais





--
Cordialement,

Jacques.



Avatar
ClémentMarcotte
Bonjour,

Juste pour le fun et pour les allergiques à l'API, on peut aussi passer par
l'environnement des scripts (WSH).

Sub MesDocuments()
Dim wshshell As Object, LeDossierMesDocuments As String
Set wshshell = CreateObject("WScript.Shell")
LeDossierMesDocuments = wshshell.SpecialFolders("mydocuments")
MsgBox LeDossierMesDocuments
End Sub


"Jacques93" a écrit dans le message de
news:
Bonjour Laurent,

Pour récupérer le chemin de 'Mes document' quelque soit l'OS et
l'utilisateur, on, peut utiliser l'API SHGetFolderPath :



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shgetfolderpath.asp


==================================================== > Private Declare Function SHGetFolderPath Lib "shfolder.dll" _
Alias "SHGetFolderPathA" _
(ByVal hwndOwner As Long, _
ByVal nFolder As Long, _
ByVal hToken As Long, _
ByVal dwReserved As Long, _
ByVal lpszPath As String) As Long

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Private Sub CommandButton1_Click()
Dim fName As String
Const SW_SHOWMAXIMIZED = 3

fName = GetMyDocPath & "toto.doc"
ShellExecute 0&, "open", fName, 0&, 0&, SW_SHOWMAXIMIZED
End Sub

Private Function GetMyDocPath() As String
Const CSIDL_PERSONAL = &H5
Const SHGFP_TYPE_CURRENT = &H0
Const MAX_LENGTH = 260

Dim MyDocPath As String

MyDocPath = Space(MAX_LENGTH)
If SHGetFolderPath(0&, CSIDL_PERSONAL, -1, _
SHGFP_TYPE_CURRENT, MyDocPath) = 0 Then
MyDocPath = Left(MyDocPath, InStr(MyDocPath, Chr$(0)) - 1)
End If
GetMyDocPath = MyDocPath
End Function

Bonjour à tous,

Est-ce que quelqu'un pourrait me faire une macro (sous Excel bien sûr)
qui


déclenche l'ouverture d'un fichier word (exemple: toto.doc) situé dans
"mes


documents"?

Merci de votre aide.


Laurent Charrais





--
Cordialement,

Jacques.



Avatar
Jacques93
Bonjour Clément Marcotte,

Tout à fait, c'est une allergie assez répandue ;-)
Et pour compléter ta réponse, si tu le permets, pour ensuite ouvrir le
document dans Word, toujours avec WSH :

Set Script = CreateObject("WScript.Shell")
Script.Run "Winword.exe " & LeDossierMesDocuments & "toto.doc" , 1 ,
False

L'avantage de l'API SHGetFolderPath est le nombre de répertoires que
l'on peut récupérer (16 avec SpecialFolder, plus de 50 avec l'API), mais
c'est clair que c'est moins lisible au premier abord.

L'important est de connaitre l'existence des différentes méthodes,
ensuite chacun fait son choix.

Bonjour,

Juste pour le fun et pour les allergiques à l'API, on peut aussi passer par
l'environnement des scripts (WSH).

Sub MesDocuments()
Dim wshshell As Object, LeDossierMesDocuments As String
Set wshshell = CreateObject("WScript.Shell")
LeDossierMesDocuments = wshshell.SpecialFolders("mydocuments")
MsgBox LeDossierMesDocuments
End Sub



[...]


--
Cordialement,

Jacques.