Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ordnerinhalt bei Filedialog anzeigen

Ordnerinhalt bei Filedialog anzeigen
21.09.2005 13:07:16
Philipp
Hallo Forum,
ich habe da ein kleines Problem:
Ich habe eine Methode, die mir alle Namen der Dateien mit einer bestimmten Endung, die in einem Ordner liegen, in einen Vektor schreibt.
Den Ordner ermittel ich mit Application.FileDialog(msoFileDialogFolderPicker).
Gibt es die Möglichkeit, die Filedialog-Methode so aufzurufen, dass der Ordnerinhalt des jeweils aktuellen Ordners angezeigt wird?
Also genau so, wie es bei Application.GetOpenFilename geht, nur dass ich nicht eine Datei auswähle, sondern den gesamten Ordner, in dem die angezeigten Dateien liegen.
Vielen Dank schonmal,
Gruß, Philipp
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordnerinhalt bei Filedialog anzeigen
21.09.2005 14:17:36
Ray
hi,
vielleicht hilft das:
Sub objektanzeigen()
Application.ScreenUpdating = False
Worksheets("outputFiles").Select
Set fs = Application.FileSearch
inp1 = Worksheets("datenOutput").Range("e28").Value
inp2 = Worksheets("datenOutput").Range("f28").Value
With fs
.LookIn = "F:\M\" & inp1 & "\" & inp2
.SearchSubFolders = True
.Filename = "*.*" 'alle

If .Execute > 0 Then
MsgBox "Ich habe " & .FoundFiles.Count & " Dateien gefunden", , "- Suchergebnis:"

Dim iMax
iMax = Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To .FoundFiles.Count
'Sheets("outputFiles").Select


Worksheets("outputFiles").Cells(i, 1).Value = .FoundFiles(i)



Next i

Else
'MsgBox "There were no files found."
MsgBox "Es wurden keine Dateien gefunden", , "- Suchergebnis:"
Nofile = 1
End If
End With


If Nofile = 1 Then Exit Sub
frmFiles.Show
End Sub

Private Sub UserForm_Initialize()
Dim lR%
lR = Worksheets("outputFiles").Cells(Rows.Count, 1).End(xlUp).Row
ListBox1.RowSource = "outputFiles!a1:a" & lR
ListBox1.ListIndex = 0
End Sub

gruß
ray
Anzeige
AW: Ordnerinhalt bei Filedialog anzeigen
21.09.2005 14:51:14
Philipp
Hallo Ray,
Vielen Dank schonmal für deine Hilfe. Ich habe zwar noch nicht ausprobiert, was dein Programm macht, da ich es nicht so ganz nachvollziehen kann (bin (noch) nicht so der VBA-Crack), aber es scheint mir doch recht aufwendig, für das, was ich eigentlich suche. Vielleicht habe ich mich nicht so deutlich ausgedrückt.
Ich möchte eigentlich "nur", dass die Suchmaske, die beim Aufruf "Application.FileDialog(msoFileDialogFolderPicker)" zur Ordnerauswahl erscheint mir den Inhalt der Ordner anzeigt, in dem ich mich befinde und nicht nur die vorhandenen Unterordner.
Ich suche also sowas wie (Beispiel:) Application.FileDialog(msoFileDialogFolderPicker).ShowContent oder so.
Gibt es da irgendetwas?
Grüßle,
Philipp
Anzeige
AW: Ordnerinhalt bei Filedialog anzeigen
21.09.2005 14:54:40
Fred
Hi,
dann verwende msoFileDialogFilePicker
mfg Fred
AW: Ordnerinhalt bei Filedialog anzeigen
21.09.2005 15:18:35
Philipp
Hallo Fred,
beim Filepicker klappt es, da hast du recht. Das Problem ist nur, dass ich wirklich den Ordner brauche, da ich alle Dateien eines speziellen Typs in diesem Ordner dann in einen Vektor einlese. Mit Filepicker bekomme ich immer nur eine einzige Datei.
Jemand noch eine Idee?
Grüßle,
Philipp
Anzeige
AW: Ordnerinhalt bei Filedialog anzeigen
21.09.2005 15:19:59
Fred
Hi,
da gibt es die Option Multiselect.
mfg Fred
AW: Ordnerinhalt bei Filedialog anzeigen
21.09.2005 15:54:08
Philipp
ok, Multiselect würde zur Not funktionieren. Ist aber nicht so elegant, bei vielen Dateien. Ich werde es dann jetzt wohl erstmal so machen. Schade, ich dachte es gibt vielleicht so einen Befehl für den FolderPicker.
Vielen Dank für den Tip und die Geduld mit mir :0).
Gruß,
Philipp
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Ordnerinhalt bei Filedialog anzeigen


Schritt-für-Schritt-Anleitung

Um den Ordnerinhalt bei der Verwendung von Application.FileDialog(msoFileDialogFolderPicker) darzustellen, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen:

  1. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Modul einfügen:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle Einfügen > Modul.
  3. Code eingeben:

    • Füge den folgenden Code in das Modul ein:
    Sub OrdnerinhaltAnzeigen()
       Dim fd As FileDialog
       Dim strFolderPath As String
       Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    
       If fd.Show = -1 Then
           strFolderPath = fd.SelectedItems(1)
           MsgBox "Der ausgewählte Ordner ist: " & strFolderPath
           ' Hier kannst du den Code hinzufügen, um den Inhalt des Ordners zu verarbeiten
       End If
    End Sub
  4. Makro ausführen:

    • Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.

Häufige Fehler und Lösungen

  • Fehler: "Komponente nicht gefunden"

    • Lösung: Stelle sicher, dass du die richtigen Bibliotheken in den Verweisen aktiviert hast. Gehe zu Extras > Verweise und aktiviere die benötigten.
  • Keine Ordner angezeigt

    • Lösung: Überprüfe, ob du das Show-Methodenaufruf korrekt verwendest. Stelle sicher, dass du den Dialog mit fd.Show öffnest.

Alternative Methoden

Falls du eine andere Methode zur Auswahl von Ordnern oder Dateien in Excel VBA verwenden möchtest, kannst du msoFileDialogFilePicker mit der MultiSelect-Option verwenden:

Sub DateiauswahlMitMultiSelect()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    fd.AllowMultiSelect = True
    If fd.Show = -1 Then
        Dim i As Integer
        For i = 1 To fd.SelectedItems.Count
            MsgBox "Ausgewählte Datei: " & fd.SelectedItems(i)
        Next i
    End If
End Sub

Diese Methode ermöglicht dir, mehrere Dateien auszuwählen, aber du musst selbst den Ordnerinhalt verarbeiten.


Praktische Beispiele

Hier sind einige praktische Anwendungsbeispiele, wie du die msofiledialogfolderpicker-Option nutzen kannst:

  1. Ordnerinhalt in ein Arbeitsblatt schreiben:

    Sub SchreibeOrdnerinhalt()
       Dim fd As FileDialog
       Dim strFolderPath As String
       Dim strDatei As String
       Dim i As Integer
    
       Set fd = Application.FileDialog(msoFileDialogFolderPicker)
       If fd.Show = -1 Then
           strFolderPath = fd.SelectedItems(1)
           strDatei = Dir(strFolderPath & "\*.*")
           i = 1
           Do While strDatei <> ""
               Worksheets("Sheet1").Cells(i, 1).Value = strDatei
               i = i + 1
               strDatei = Dir
           Loop
       End If
    End Sub
  2. Dateitypen filtern:

    Um nur bestimmte Dateitypen anzuzeigen, kannst du den Code anpassen:

    strDatei = Dir(strFolderPath & "\*.txt") ' Nur .txt-Dateien

Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um die Ausführungsgeschwindigkeit zu erhöhen, wenn du viele Dateien verarbeiten musst.
  • Verwende With ... End With, um den Code sauberer und lesbarer zu gestalten, besonders wenn du mehrere Eigenschaften eines Objekts ändern möchtest.

FAQ: Häufige Fragen

1. Wie kann ich eine Liste aller Dateien in einem Ordner erstellen?
Verwende den Dir-Befehl in einer Schleife, um alle Dateien im ausgewählten Ordner aufzulisten.

2. Kann ich den Ordnerinhalt direkt im FileDialog anzeigen?
Leider zeigt msoFileDialogFolderPicker nur Unterordner an. Du müsstest eine benutzerdefinierte Lösung implementieren, um alle Dateien anzuzeigen.

3. Gibt es eine Möglichkeit, einen spezifischen Ordner beim Öffnen des Dialogs vorauszuwählen?
Ja, du kannst den InitialFileName-Parameter des FileDialogs verwenden, um einen Standardordner auszuwählen:

fd.InitialFileName = "C:\DeinOrdner\"

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige