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 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
Sub OpenAFile()
Dim sFilter$, sDefNom$, sInitRep$, sNomDial$, sFichToOpen$
'paramètres de la boite de dialogue
sFilter = "Tous les fichiers (*.*)" & Chr(0) & "*.*" & Chr(0)
sDefNom = "MonFichierParDéfaut.xyz"
sInitRep = "D:\"
sNomDial = "Essai ouvrir"
'appel puis ouverture du fichier si sélection
sFichToOpen = GetFileName(sFilter, sDefNom, sInitRep, sNomDial)
If sFichToOpen <> "" Then
ShellExecute 0, "open", sFichToOpen, "", "", 5
End If
End Sub
Function GetFileName(sFilter As String, sDefaultFile As String, sInitialDir As String, sTitle As String) As String
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
With OpenFile
.lStructSize = Len(OpenFile)
.lpstrFilter = sFilter
.nFilterIndex = 1
.lpstrFile = sDefaultFile & String(256 - Len(sDefaultFile), 0)
.nMaxFile = Len(OpenFile.lpstrFile) - 1
.lpstrFileTitle = OpenFile.lpstrFile
.nMaxFileTitle = OpenFile.nMaxFile
.lpstrInitialDir = sInitialDir
.lpstrTitle = sTitle
.flags = 0
End With
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
GetFileName = ""
Else
GetFileName = Trim(OpenFile.lpstrFile)
End If
End Function