Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateityp auslesen | Fileattribut

Forumthread: Dateityp auslesen | Fileattribut

Dateityp auslesen | Fileattribut
08.03.2004 15:30:53
Russi
Hallo Zusammen,
hoffe, dass dies nicht als Doppelposting gezählt wird...
Schaffe es nicht, aus folgendem Makro die Fileendungen zu den zugehörigen Dateien zu ermitteln..., bekomme jedes Mal einen Laufzeitfehler "13".
Vielleicht hat jemand einen Ansatz zu folgender Zeile
--> Cells(i, 4) = fileattr(gefFile) 'Filetyp
in untenstehendem Makro:

Sub List_Files_in_all_folder()
' einschl unterordner von Ramses Rainer
' komplett mit Phad
Dim Dateiform As String
Dim i As Long, TotFiles As Long
Dim gefFile As String
Dim dname As String
Dim Suchpfad As String, suchbegriff As String
Dim OldStatus As Variant
Suchpfad = InputBox("Geben Sie den Ordner an, der durchsucht werden soll.", "Pfad definieren", Application.DefaultFilePath)
If Suchpfad = "" Then Exit Sub
Dateiform = InputBox("Geben Sie den Dateityp an der gesucht werden soll", "Dateierweiterung", "*.*")
If Dateiform = "" Then Exit Sub
Application.ScreenUpdating = True
OldStatus = Application.StatusBar
With Application.FileSearch
.LookIn = Suchpfad
'       suchen auch in Unterverzeichnis
.SearchSubFolders = True
.Filename = Dateiform
If .Execute() > 0 Then
TotFiles = .FoundFiles.Count
Application.StatusBar = "Total " & TotFiles & " gefunden"
For i = 2 To .FoundFiles.Count
gefFile = .FoundFiles(i)
'Eintragen der Dateien in die aktuelle Tabelle
'in Spalte A
Application.StatusBar = "Datei: " & i & " von " & TotFiles
Cells(i, 1) = gefFile
'   ergänzt
Cells(i, 2) = FileLen(gefFile)  ' Dateigröße
Cells(i, 3) = FileDateTime(gefFile) ' Dateidatum
Cells(i, 4) = fileattr(gefFile) 'Filetyp
Next i
End If
End With
Application.StatusBar = OldStatus
Application.ScreenUpdating = True
End Sub

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateityp auslesen | Fileattribut
08.03.2004 16:17:57
Waltraud
Fileattr braucht andere Übergabeparameter und bezieht sich nur auf geöffnete Dateien.
Vielleich reicht dir ja GetAttr()
AW: Dateityp auslesen | Fileattribut
08.03.2004 16:20:47
Andreas
Hallo,
vielen Dank für die Hilfe. Leider liefert mir die trotz verschiedener Attribute nur die Zahl 32 zurück...
AW: Dateityp auslesen | Fileattribut
08.03.2004 16:21:05
Russi
Na sowas, noch´n Russi... ;-)
Ich habe Deinen Code mal ausprobiert. Der Fehler erscheint, wenn als Dateiform "*.xxx"
vorgegeben wird. Gibst Du nur die dreistellige Dateierweiterung an, funzt alles toll.
Viele Grüße
Russi
Anzeige
AW: Dateityp auslesen | Fileattribut
08.03.2004 16:28:02
Russi
Hi, kommt von "Rusnjak", woher ist Dein "Russi"?
Besten Dank für die Info. Ich habe bisher ausschließlich per "*.*" gesucht, heißt das, ich lasse dann in der Inputbox das Textfeld vollkommen leer?
Ciao
Russi
AW: Dateityp auslesen | Fileattribut
08.03.2004 16:49:41
Russi
Hi!
MEIN Russi kommt von Russ.
Feld leer lassen ist blöd, da die Sub dann verlassen wird. Dann musst Du zumindest due Zeile "If Dateiform = "" Then Exit Sub" löschen, vielleicht gehts dann.
Mit "*.*" habe ich es mal versucht, das funktioniert bei mir jedoch überhaupt nicht (Vielleicht wg. Excel97?!?) Auch ein einzelnes Sternchen schluckt er nicht.
Sorry, irgendwie komme ich da auch nicht weiter.
Russ(i)
Anzeige
AW: Dateityp auslesen | Fileattribut
08.03.2004 18:37:22
Nepumuk
Hallo Russi,
FileAttr liefert dir nur den Modus zurück, in der eine Datei (meistens Textdateien) geöffnet wurde. Was benötigst du genau?
Gruß
Nepumuk
AW: Dateityp auslesen | Fileattribut
08.03.2004 19:11:35
Russi
Hallo Nepumuk,
ich möchte in der vierten Spalte einfach die Dateiendungen sehen, z.B. *.pdf, *.doc, *.xls, *.jpg, etc.
AW: Dateityp auslesen | Fileattribut
08.03.2004 19:22:21
Nepumuk
Hallo Russi,
dann mach es einfach so:
cells(x, y) = Right(gefFile, 4)
für die Dateiendung gibt es keine spezielle Eigenschaft.
Gruß
Nepumuk
Anzeige
AW: Dateityp auslesen | Fileattribut
08.03.2004 19:24:12
Russi
Die Variante habe ich mittlerweile auch schon gehabt, nur bei Endungen mit mehr als drei Buchstaben, wie z.B. htaccess oder so sieht das nicht so gut aus, aber andererseits muss man in diesem Fall wohl einfach diesen Kompromiss eingehen ;-)
Vielen Dank für Deine Hilfe...
Andreas
AW: Dateityp auslesen | Fileattribut
08.03.2004 20:35:38
Nepumuk
Hallo Russi,
dann so:
Cells(x, y) = Right(gefFile, InStr(1, StrReverse(gefFile), "."))
Gruß
Nepumuk
Anzeige
;
Anzeige

Infobox / Tutorial

Dateityp auslesen und Fileattribute in Excel


Schritt-für-Schritt-Anleitung

Um den Dateityp und die Dateiendungen in Excel auszulesen, kannst du das folgende VBA-Makro verwenden. Achte darauf, nur die dreistellige Dateiendung anzugeben, um Laufzeitfehler zu vermeiden.

Sub List_Files_in_all_folder()
    Dim Dateiform As String
    Dim i As Long, TotFiles As Long
    Dim gefFile As String
    Dim dname As String
    Dim Suchpfad As String, OldStatus As Variant

    Suchpfad = InputBox("Geben Sie den Ordner an, der durchsucht werden soll.", "Pfad definieren", Application.DefaultFilePath)
    If Suchpfad = "" Then Exit Sub

    Dateiform = InputBox("Geben Sie den Dateityp an, der gesucht werden soll", "Dateierweiterung", "*.???")
    If Dateiform = "" Then Exit Sub

    Application.ScreenUpdating = True
    OldStatus = Application.StatusBar

    With Application.FileSearch
        .LookIn = Suchpfad
        .SearchSubFolders = True
        .Filename = Dateiform
        If .Execute() > 0 Then
            TotFiles = .FoundFiles.Count
            Application.StatusBar = "Total " & TotFiles & " gefunden"
            For i = 1 To .FoundFiles.Count
                gefFile = .FoundFiles(i)
                Cells(i + 1, 1) = gefFile
                Cells(i + 1, 2) = FileLen(gefFile)  ' Dateigröße
                Cells(i + 1, 3) = FileDateTime(gefFile) ' Dateidatum
                Cells(i + 1, 4) = Right(gefFile, 4) ' Dateiendung
            Next i
        End If
    End With

    Application.StatusBar = OldStatus
    Application.ScreenUpdating = True
End Sub

Häufige Fehler und Lösungen

  1. Laufzeitfehler "13"

    • Dieser Fehler tritt auf, wenn die Dateiendung nicht korrekt angegeben wird. Verwende nur die dreistellige Endung, z.B. *.pdf, anstelle von *.???.
  2. Falsche Rückgabe von FileAttr

    • FileAttr liefert nur den Modus geöffneten Dateien zurück. Verwende stattdessen GetAttr() oder Right(gefFile, 4) für die Dateiendung.

Alternative Methoden

Eine alternative Methode, um den Dateityp in Excel zu ermitteln, wäre die Verwendung von FileSystemObject. Hier ein Beispiel:

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim file As Object
Set file = fso.GetFile(gefFile)
Cells(i + 1, 4) = file.Type ' Gibt den Dateityp zurück

Diese Methode kann nützlich sein, wenn du mehr Informationen über die Datei benötigst.


Praktische Beispiele

Wenn du ein Makro erstellst, das alle Dateien in einem Ordner anzeigt, achte darauf, die Dateiendungen korrekt zu erfassen. Beispielsweise:

  • Für Textdateien: *.txt
  • Für Excel-Dateien: *.xls
  • Für Bilddateien: *.jpg

Achte darauf, dass die Eingabe in der InputBox das richtige Format hat, um Fehler zu vermeiden.


Tipps für Profis

  • Verwende InStr in Kombination mit StrReverse, um Dateiendungen, die länger als drei Buchstaben sind, korrekt zu extrahieren:
Cells(i + 1, 4) = Mid(gefFile, InStrRev(gefFile, ".") + 1)
  • Halte deinen Code sauber und benutze Kommentare, um die Funktionsweise für andere verständlich zu machen.

FAQ: Häufige Fragen

1. Wie kann ich die Dateiendung für Textdateien mit 3 Buchstaben auslesen? Um die Dateiendung für Textdateien mit 3 Buchstaben zu erfassen, kannst du Right(gefFile, 4) verwenden, wobei du sicherstellst, dass die Eingabe korrekt ist.

2. Warum funktioniert FileAttr nicht wie erwartet? FileAttr liefert nur den Status von geöffneten Dateien zurück. Verwende GetAttr() oder die String-Funktionen von VBA, um die Dateiendung zu erfassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige