Originariamente inviato da Frankos
Esiste un codice equivalente in VBA Access?
Ciao
Puoi farlo usando alcune API:
codice:
Option Explicit
Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Private Const BIF_RETURNONLYFSDIRS as Long = &H1
Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)
Public Function SfogliaCartelle(ByVal Handle As Long) As String
Dim BInfo As BROWSEINFO
Dim CartellaScelta As Long
Dim PercorsoAllocato As Long
Dim PercorsoScelto As String
BInfo.hOwner = Handle
BInfo.lpszTitle = "Scegli un file:"
BInfo.ulFlags = BIF_BROWSEINCLUDEFILES
PercorsoAllocato = SHBrowseForFolder(BInfo)
PercorsoScelto = Space$(512)
CartellaScelta = SHGetPathFromIDList(PercorsoAllocato, PercorsoScelto)
If CartellaScelta Then
SfogliaCartelle = Left$(PercorsoScelto, InStr(PercorsoScelto, Chr$(0)) - 1)
CoTaskMemFree PercorsoAllocato
Else
SfogliaCartelle = ""
End If
End Function
Private Sub Sfoglia_Click()
MsgBox (SfogliaCartelle(Me.hWnd))
End Sub
Variando i flag (ulFlags) della variabile BInfo puoi includere o meno i file nella finestra di ricerca.