PDA

Vollständige Version anzeigen : Mehre Dateien auswählen und deren Namen in einem Array speichern


Mietzekaetzchen
01.07.2014, 12:56
Hallöchen,

ich möchte über eine Dialogbox mehre Dateien eines bestimmten Grundpfades (wenn möglich nicht änderbar) auswahlen und deren Dateinamen in in Array schreiben.

Auf http://www.access-im-unternehmen.de/268 hab ich folgende Funktion gefunden:

Public Function DateiAuswaehlen()

Dim objFiledialog As FileDialog

Set objFiledialog = _
Application.FileDialog(msoFileDialogOpen)

With objFiledialog

.AllowMultiSelect = False
If .Show = True Then

DateiAuswaehlen = .SelectedItems(1)

End If

End With

Set objFiledialog = Nothing

End Function

Mit
x = DateiAuswaehlen()
MsgBox x

könnte man dann den Pfad der ausgewählten Datei in x speichern.

Folgendes möchte ich ändern:
- Grundpfad( wenn möglich nicht änderbar) in aktuelles Verzeichnis ändern
- Nur .csv Dateien auswählbar lassen
- Mehrere Dateien auswählbar machen und in einem Array speichern.

Letzeres könnte ich durch .AllowMultiSelect = True
ändern. Allerdings konnten die Pfade nicht in x gespeichert werden.


Sind alle Aufgaben mit dem "Ausgangskonstrukt" lösbar?
Oder muss ich auf eine andere Funktion zurückgreifen?

Gibt es für einige Aufgaben schon Lösungen?

Danke für Eure Hilfe

Mietzekaetzchen
01.07.2014, 13:02
Den Grundpfad konnte man ganz einfach mit
.InitialFileName = ThisWorkbook.Path
hinzufügen.

Mietzekaetzchen
01.07.2014, 13:07
Und die .csv-Dateien kann mann mit
.Filters.Add "csv-Dateien(*.csv)", "*.csv", 1
einfügen.

Mietzekaetzchen
01.07.2014, 13:15
So funktioniert die Mehrauswahl leider nicht:
If .Show = True Then
Dim DateiN As Integer
For DateiN = 1 To 10
DateiAuswaehlen = .SelectedItems(DateiN)
Next DateiN
End If

Dim Pfad() As Variant

Pfad = DateiAuswaehlen()
Dim a As Integer
For a = 1 To 10
MsgBox Pfad(a)
Next a

Hat jemand hierzu eine Idee?

EarlFred
01.07.2014, 14:10
Hallo Name?,

so?
Option Explicit
Sub hiergehtslos()
Dim Dateiauswahl() As String
Dim a As Integer

Dateiauswahl = DateiAuswaehlen()

For a = LBound(Dateiauswahl, 1) To UBound(Dateiauswahl, 1)
MsgBox Dateiauswahl(a)
Next a
End Sub




Public Function DateiAuswaehlen() As String()

Dim objFiledialog As FileDialog
Dim fStrFilenames() As String, i As Integer

Set objFiledialog = _
Application.FileDialog(msoFileDialogOpen)

With objFiledialog
.AllowMultiSelect = True
.InitialFileName = ThisWorkbook.Path
.Filters.Add "csv-Dateien(*.csv)", "*.csv", 1
If .Show = True Then
ReDim fStrFilenames(1 To .SelectedItems.Count)
ReDim DateiAuswaehlen(1 To .SelectedItems.Count)
For i = 1 To .SelectedItems.Count
fStrFilenames(i) = .SelectedItems(i)
Next i
End If
.Filters.Delete 1

End With

DateiAuswaehlen = fStrFilenames

Set objFiledialog = Nothing

End Function

Grüße
EarlFred