Erkennung von PPT- und PDF-Dateien mittels FSO (File System Object) | Word-VBA


Legasa

Grünschnabel
#1
Hallo zusammen,

ich habe einen Ordner, in welchem mehrere Unterordner sind. In diesen befinden sich verschiedene Dateien.
Ich möchte sofern in einem Ordner genau eine Datei abliegt und diese eine PPT, PPTX oder PDF ist, einen Teil davon importieren.
Das Importieren von PPTX-Dateien funktioniert problemlos. Bei PPT und PDF-Dateien sieht das anders aus.
Noch vor dem Schritt des Imports erkennt das Makro die Dateien in den Ordnern nicht richtig.
Unten ist der Teil meines Makros, welcher zur Erkennung der Dateien dient, zu sehen.
An der rot markierten Stelle wird die Schleife übersprungen, sofern eine PPT- oder PDF-Datei im Ordner liegt.
In Eachfil wird 'Count' als 1 angegeben, es liegt aber kein Item in ihm ab.
Anders ist es bei PPTX Dateien. Auch hier zählt 'Count' eine Datei, weiterhin ist in Eachfil aber ein Item gespeichert.
Sprich: PPT- und PDF-Dateien werden nicht als Items gespeichert, sodass ich später nicht auf sie zugreifen kann.
Ich habe bereits ausführlich Foren durchstöbert, konnte jedoch leider noch nirgendwo dieses Problem finden.
Kann mir dabei jemand behilflich sein?

Visual Basic:
Dim FSO As Object
    Dim SearchFolder As Object
    Dim subFolder As Object
    Dim FI As Object
    Dim FD As Object
    Dim EachFil As Object
    Set FSO = CreateObject("Scripting.Filesystemobject")
    Set SearchFolder = FSO.Getfolder(Gremienpfad)
    Set subFolder = SearchFolder.subfolders[/COLOR]

Set FI = Nothing
Set EachFil = Nothing
          
            For Each FI In subFolder                  
                    If Left(FI.Name, 2) = vTOP Then '"TOP_" & vTOP Then
                    Treffer = FI 'Präsentation/Datei zum TOP gefunden
                    Dokumentenpfad = FI.Path
                    Set EachFil = FI.Files
                    Exit For
                End If 'Left
            Next FI
  
            If Treffer <> "" Then
                file = 0                               
                'If Eachfil.Count = 1 Then
                For Each FI In EachFil[/COLOR]
                Treffer = FI.Name
                dateimitendung = FI
                Dokumentenpfad = FI.Path
                file = file + 1
                Next FI
            End If
..... Importieren der Dateien etc.
 
Zuletzt bearbeitet von einem Moderator:

Yaslaw

n/a
Moderator
#2
Hab dein Code zur Lesbarkeit in Code-Tags gesetzt.
Du kannst ihn noch sauber aufräumen und ien Kommentar setzen, wo die rot markierte Stelle ist.

Den Dateityp ermittels du am einfachsten mit
Visual Basic:
select case ucase(fso.GetExtensionName(FI.Name))
case "PPT"
    'TODO: Mach was
case "PPTX"
    'TODO: Mach was
'....
End Select