Datei-Auswählen-Dialog (Mehrfachauswahl) - gesperrter Ordner

  • Access

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ThomasLx.

    Datei-Auswählen-Dialog (Mehrfachauswahl) - gesperrter Ordner

    Hallo zusammen,
    ich habe ein Problem in einer Datenbankprogrammierung.
    Ich verwende zum auswählen von Dateien das folgende Modul:
    Spoiler anzeigen

    Visual Basic-Quellcode

    1. Public Function DateiOeffnenMulti(sWindowTitle As String, Optional sButtonTitle As String = "Öffnen", _
    2. Optional sFilter As String = "Alle Dateien|*.*") As Variant
    3. ' ----------------------------------------------------------------------------------------
    4. ' Beschreibung:
    5. ' erstellt einen Datei-Öffnen-Dialog mit Mehrfachauswahl
    6. '
    7. ' Paramter:
    8. ' sWindowTitle Titel des Datei-Öffnen-Dialogs
    9. ' sButtonTitle Titel des Öffnen-Buttons
    10. ' sFilter Dateifilter:
    11. ' Spezielles Format
    12. ' -> "NAME der Dateigruppe|*.end1; *.end2; *.end3" & chr(0) & "2. Gruppe|*.*"
    13. '
    14. ' Rückgabe:
    15. ' Variant-Array Erfolg: Vollständige Pfade von Dateiauswahl
    16. ' Abbrechen: Erstes element = 0
    17. ' ----------------------------------------------------------------------------------------
    18. Dim dlg As FileDialog
    19. Dim varArrAuswahl() As Variant
    20. Dim varSelected As Variant
    21. Dim varFilterEntries As Variant
    22. Dim varFilterEntry As Variant
    23. Dim i As Integer
    24. Set dlg = Application.FileDialog(msoFileDialogFilePicker)
    25. ' Filter aus String generieren
    26. varFilterEntries = Split(sFilter, Chr(0))
    27. With dlg
    28. .AllowMultiSelect = True
    29. .Filters.Clear
    30. For i = 0 To UBound(varFilterEntries)
    31. varFilterEntry = Split(varFilterEntries(i), "|")
    32. .Filters.Add varFilterEntry(0), varFilterEntry(1)
    33. Next
    34. .InitialView = msoFileDialogViewThumbnail
    35. .Title = sWindowTitle
    36. .ButtonName = sButtonTitle
    37. If .Show Then
    38. i = 0
    39. For Each varSelected In .SelectedItems
    40. If i = 0 Then
    41. ReDim Preserve varArrAuswahl(1)
    42. Else
    43. ReDim Preserve varArrAuswahl(UBound(varArrAuswahl) + 1)
    44. End If
    45. varArrAuswahl(i) = varSelected
    46. i = i + 1
    47. Next
    48. DateiOeffnenMulti = varArrAuswahl
    49. Else
    50. DateiOeffnenMulti = 0
    51. End If
    52. End With
    53. Set dlg = Nothing
    54. End Function

    Leider kann ich nachdem ich Dateien aus einem Ordner ausgewählt habe, diesen Ordner nicht mehr löschen.
    Ich muss entweder immer wieder Access schließen oder eine Datei aus einem anderen Odner auswählen.
    Vermutlich müssen irgendwo ein Objekt, welches auf die Dateien zugreift entladen werden.
    Die Zeile 57 habe ich schon hinzugefügt, jedoch leider ohnen Erfolgt.

    Aufrufen tue ich den Dialog über den folgenden Programmcode:

    Visual Basic-Quellcode

    1. Dim vararrDateien As Variant
    2. vararrDateien = DateiOeffnenMulti("Bitte Vorrichtungsfotos auswählen", "Fotos auswählen", "Bilder|*.jpg; *.jpeg; *.bmp")

    Woran könnte das liegen und wie kann ich da etwas machen?
    Das liegt daran, dass der Ordner, auf den zuletzt mit dem FileDialog zugegriffen wurde, von Windows als aktuelles Verzeichnis gesetzt wird.
    und das aktuelle Verzeichnis kann man nicht löschen oder umbenennen.
    Näheres kannst du hier nachlesen -> The curse of the current directory und Why does the common file dialog change the current directory?
    Beheben kannst du es, indem du einen anderen Ordner auswählst.
    z.B. mit

    Visual Basic-Quellcode

    1. ChDir "C:\"