Sélection de fichiers
Parcourir et Sélectionner un ou plusieurs fichiers (API)
Sélectionner et retourner le chemin de un ou plusieurs fichiers séparés par un point-virgule, dans une boîte de dialogue Fichier Ouvrir.
'/
'/ A placer dans la partie déclarative
'/
Option Compare Database
Option Explicit
Public Type OpenFileName
lStructSize As Long
hwndOwner As Long
Instance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustomFilter 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
Public Declare Function GetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (pOpenfilename As OpenFileName) As Long
Public Const OFN_AllowMultiSelect = &H200
Public Const OFN_CreatePrompt = &H2000
Public Const OFN_EnableHook = &H20
Public Const OFN_EnableTemplate = &H40
Public Const OFN_EnableTemplateHandle = &H80
Public Const OFN_EXPLORER = &H80000
Public Const OFN_ExtensionDifferent = &H400
Public Const OFN_FileMustExist = &H1000
Public Const OFN_HideReadOnly = &H4
Public Const OFN_LongNames = &H200000
Public Const OFN_NoChangeDir = &H8
Public Const OFN_NoDeReferenceLinks = &H100000
Public Const OFN_NoLongNames = &H40000
Public Const OFN_NoNetWorkButton = &H20000
Public Const OFN_NoReadOnlyReturn = &H8000
Public Const OFN_NoTestFileCreate = &H10000
Public Const OFN_NoValiDate = &H100
Public Const OFN_OverWritePrompt = &H2
Public Const OFN_PathMustExist = &H800
Public Const OFN_ReadOnly = &H1
Public Const OFN_ShareAware = &H4000
Public Const OFN_ShareFallThrough = 2
Public Const OFN_ShareNoWarn = 1
Public Const OFN_ShareWarn = 0
Public Const OFN_ShowHelp = &H10
Global Dialogue As OpenFileName
Public strFiltre As String
Public strFile As String
Public strNomFile As String
Public RetVal As Long
La fonction :
Public Function fOpenFile(Optional strTitle As Variant, _
Optional strInitialDir As Variant, _
Optional MultiSelect As Boolean = False) _
As String
If IsMissing(strTitle) Then
strTitle = "Ouvrir..."
End If
If IsMissing(strInitialDir) Then
strInitialDir = CurDir
End If
fOpenFile = ""
strFiltre = "Fichiers Word" & Chr$(0) & "*.doc;*txt" & Chr$(0) & _
"Fichiers Access" & Chr$(0) & "*.mdb" & Chr$(0) & _
"Fichiers Excel" & Chr$(0) & "*.xls" & Chr$(0) & _
"Tous les fichiers" & Chr$(0) & "*.*"
With Dialogue
.lStructSize = Len(Dialogue)
.lpstrFilter = strFiltre
.lpstrFile = Space(254)
.nMaxFile = 255
.lpstrFileTitle = Space(254)
.nMaxFileTitle = 255
.lpstrInitialDir = strInitialDir
.lpstrTitle = strTitle
If MultiSelect = False Then
.flags = OFN_FileMustExist + _
OFN_HideReadOnly + _
OFN_PathMustExist
Else
.flags = OFN_FileMustExist + _
OFN_HideReadOnly + _
OFN_PathMustExist + _
OFN_AllowMultiSelect + _
OFN_LongNames + _
OFN_EXPLORER
End If
End With
RetVal = GetOpenFileName(Dialogue)
If RetVal >= 1 Then
fOpenFile = fMultiSelect(Dialogue.lpstrFile)
Else
fOpenFile = ""
Exit Function
End If
End Function
La fonction fMultiSelect :
Function fMultiSelect(ByVal strItem As String) As String
Dim strTemp As String
Dim pos As Integer
Dim TabFile() As String
Dim no As Integer
no = -1
strTemp = strItem
pos = InStr(1, strTemp, vbNullChar, vbBinaryCompare)
Do While pos > 1
If Left$(strTemp, pos - 1) <> "" Then
no = no + 1
ReDim Preserve TabFile(no)
TabFile(no) = Left$(strTemp, pos - 1)
strTemp = Right(strTemp, Len(strTemp) - Len(TabFile(no)) - 1)
pos = InStr(1, strTemp, vbNullChar, vbBinaryCompare)
End If
Loop
If Len(TabFile(0)) = 3 Then
TabFile(0) = Left(TabFile(0), 2)
End If
If UBound(TabFile) = 0 Then
fMultiSelect = TabFile(0)
Else
For no = LBound(TabFile()) + 1 To UBound(TabFile)
If fMultiSelect = "" Then
fMultiSelect = TabFile(0) & "" & TabFile(no)
Else
fMultiSelect = fMultiSelect & ";" & TabFile(0) & "" & TabFile(no)
End If
Next no
End If
End Function
Dernière modification : 09/02/2007 17:40
Catégorie : - Fichiers
Page lue 8990 fois