AT_FileDialog.bas 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. Option Compare Database
  2. Option Explicit
  3. ' ** Access Toolbox Module **
  4. ' on 2017-02-28,
  5. ' @author: Olivier Massot
  6. ' V 1.0
  7. ' Files selection dialogs
  8. ' ! Requires: Microsoft Office xx.0 Object Library.
  9. Public Function FileDialog(Optional ByVal title As String = "Select File(s)", _
  10. Optional ByVal directory As String = ".", _
  11. Optional ByVal multi_select As Boolean = False, _
  12. Optional ByVal name_filter As String = "", _
  13. Optional ByVal type_filter As String = "", _
  14. Optional separator As String = "|") As String
  15. Dim fd As Office.FileDialog
  16. Dim vFilename As Variant
  17. FileDialog = ""
  18. Set fd = Application.FileDialog(msoFileDialogFilePicker)
  19. fd.title = title
  20. fd.AllowMultiSelect = multi_select
  21. fd.InitialFileName = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(directory)
  22. fd.Filters.Clear
  23. fd.Filters.Add "All files", "*.*"
  24. If Len(name_filter) > 0 And Len(type_filter) > 0 Then
  25. If InStr(type_filter, ".") = 0 Then type_filter = "." & type_filter
  26. If InStr(type_filter, "*") = 0 Then type_filter = "*" & type_filter
  27. fd.Filters.Add name_filter, type_filter
  28. fd.FilterIndex = 2
  29. End If
  30. If fd.show() Then
  31. For Each vFilename In fd.SelectedItems
  32. If Len(FileDialog) > 0 Then FileDialog = FileDialog & separator
  33. FileDialog = FileDialog & vFilename
  34. Next
  35. End If
  36. Set fd = Nothing
  37. End Function
  38. Public Function DirectoryDialog(Optional ByVal title As String = "Select a directory", _
  39. Optional ByVal directory As String = ".") As String
  40. Dim fd As Office.FileDialog
  41. Dim varDirname As Variant
  42. DirectoryDialog = ""
  43. Set fd = Application.FileDialog(msoFileDialogFolderPicker)
  44. fd.title = title
  45. fd.InitialFileName = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(directory)
  46. If fd.show() Then
  47. DirectoryDialog = fd.SelectedItems(1) & "\"
  48. End If
  49. Set fd = Nothing
  50. End Function