J'ai beaucoup utilisé VBA avec Excel .
Avec Excel on dispose entre autres
de Application.GetOpenFilename
qui est particulièrement pratique.
Or, dans mon projet actuel pour Word,
j'aurais besoin de l'équivalent.
Seulement l'objet Dialogs(wdDialogFileOpen) provoquera réellement
l'ouverture du fichier dans une nouvelle fenêtre ... ce que je ne veux
pas...
Je désire juste que l'utilisateur aille cherche un fichier de
paramètres avec le sélecteur standard et la macro récupèrera le chemin
et se débrouillera toute seule ...
Je pourrais utiliser
Set objDialog = CreateObject("UserAccounts.CommonDialog")
mais il me semble que ça n'existe qu'avec XP
et je veux que cela puisse aussi fonctionner avec Vista (voire Seven)
( donc "centré" sur Word + VBA )
Je me retrouve tout bête ...
c'est probablement simple mais je ne vois rien...
une autre http://access.developpez.com/faq/?page=CheminsRep#RecupChemFicDlg
-- Heureux-oli Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur. http://heureuxoli.developpez.com/ http://word.developpez.com/ http://marie-lebeau.heaj.be/
une autre
http://access.developpez.com/faq/?page=CheminsRep#RecupChemFicDlg
--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/
http://marie-lebeau.heaj.be/
une autre http://access.developpez.com/faq/?page=CheminsRep#RecupChemFicDlg
-- Heureux-oli Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur. http://heureuxoli.developpez.com/ http://word.developpez.com/ http://marie-lebeau.heaj.be/
j'ai recherché en vain avec l'explorateur d'objets de l'éditeur VBA.
Avec word2000 ( sur lequel je prépare) cela n'existe visiblement pas... ;o(
HB
Lotre
bonsoir,
heureux-oli wrote:
Salut,
L'objet FileDialog est apparu avec la version 2002 d'Office et c'est un objet de la bibliothèque Office et pas Word.
donc je ne l'utiliserais pas car ça doit passer avec 2000 :o(
Je vais donc, à l'ancienne, utiliser l'API qui va bien : Brave fille, la bibli comdlg32.dll est toujours disponible...
J'ai testé ça qui fonctionne : ---------------------------------------------------------------- Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _ "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type
Function SELECTEUR() Dim OpenFile As OPENFILENAME Dim lReturn As Long Dim sFilter As String OpenFile.lStructSize = Len(OpenFile) sFilter = "Fichier texte brut (*.txt)" & Chr(0) & "*.TXT" & Chr(0) OpenFile.lpstrFilter = sFilter OpenFile.nFilterIndex = 1 OpenFile.lpstrFile = String(257, 0) OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1 OpenFile.lpstrFileTitle = OpenFile.lpstrFile OpenFile.nMaxFileTitle = OpenFile.nMaxFile OpenFile.lpstrInitialDir = ThisDocument.Path OpenFile.lpstrTitle = "Titre du sélecteur de fichier" OpenFile.flags = 0 lReturn = GetOpenFileName(OpenFile) If lReturn = 0 Then SELECTEUR = "Action annulée" Else SELECTEUR = Trim(OpenFile.lpstrFile) End If End Function ------------------------------------------------------------------------------------ Sub test() MsgBox SELECTEUR End Sub
bonsoir,
heureux-oli wrote:
Salut,
L'objet FileDialog est apparu avec la version 2002 d'Office et c'est
un objet de la bibliothèque Office et pas Word.
donc je ne l'utiliserais pas car ça doit passer avec 2000 :o(
Je vais donc, à l'ancienne, utiliser l'API qui va bien :
Brave fille, la bibli comdlg32.dll est toujours disponible...
J'ai testé ça qui fonctionne :
----------------------------------------------------------------
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Function SELECTEUR()
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
sFilter = "Fichier texte brut (*.txt)" & Chr(0) & "*.TXT" &
Chr(0)
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(257, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = ThisDocument.Path
OpenFile.lpstrTitle = "Titre du sélecteur de fichier"
OpenFile.flags = 0
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
SELECTEUR = "Action annulée"
Else
SELECTEUR = Trim(OpenFile.lpstrFile)
End If
End Function
------------------------------------------------------------------------------------
Sub test()
MsgBox SELECTEUR
End Sub
L'objet FileDialog est apparu avec la version 2002 d'Office et c'est un objet de la bibliothèque Office et pas Word.
donc je ne l'utiliserais pas car ça doit passer avec 2000 :o(
Je vais donc, à l'ancienne, utiliser l'API qui va bien : Brave fille, la bibli comdlg32.dll est toujours disponible...
J'ai testé ça qui fonctionne : ---------------------------------------------------------------- Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _ "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type
Function SELECTEUR() Dim OpenFile As OPENFILENAME Dim lReturn As Long Dim sFilter As String OpenFile.lStructSize = Len(OpenFile) sFilter = "Fichier texte brut (*.txt)" & Chr(0) & "*.TXT" & Chr(0) OpenFile.lpstrFilter = sFilter OpenFile.nFilterIndex = 1 OpenFile.lpstrFile = String(257, 0) OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1 OpenFile.lpstrFileTitle = OpenFile.lpstrFile OpenFile.nMaxFileTitle = OpenFile.nMaxFile OpenFile.lpstrInitialDir = ThisDocument.Path OpenFile.lpstrTitle = "Titre du sélecteur de fichier" OpenFile.flags = 0 lReturn = GetOpenFileName(OpenFile) If lReturn = 0 Then SELECTEUR = "Action annulée" Else SELECTEUR = Trim(OpenFile.lpstrFile) End If End Function ------------------------------------------------------------------------------------ Sub test() MsgBox SELECTEUR End Sub