Thema Datum  Von Nutzer Rating
Antwort
18.06.2018 22:23:40 Wayne
NotSolved
19.06.2018 08:30:36 Gast77560
NotSolved
Rot Dateien aus Ordnerstruktur öffnen
19.06.2018 11:27:39 Andreas
NotSolved
19.06.2018 11:37:52 Gast39314
NotSolved

Ansicht des Beitrags:
Von:
Andreas
Datum:
19.06.2018 11:27:39
Views:
533
Rating: Antwort:
  Ja
Thema:
Dateien aus Ordnerstruktur öffnen

Hallo Wayne,

ich habe mal etwas ähnliches in Word-VBA gemacht.
Ziel war es damals, Visio-Seiten aus mehreren Visiodatein, welche in Verschienen Ordner-Ebenen lagen in mein Word-Dokument zu importieren.
Dafür hatte ich auch einen definierten Pfad, von dem aus ich in die tieferen Ebenen gegangen bin um alle Dateien der Unterordner zu ermitteln und in ein Array abzulegen.

Hier mal der Code vom Hauptteil:

Sub Pfadliste_erstellen()

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'########################################################################################################################'
'#Übergeordnetes Modul zum Durchsuchen der obersten Ordnerebene, die Visio-Dateinen enthält.                            #'
'#Dieses Modul ruft für jede tiefere Ebene ein weiteres Modul auf. Nachdem alle Ordner durchsucht wurden                #'
'#wird das Array, welches die Dateinamen und deren Pfade enthält in das Textfile "Dateiliste_m_Pfad.txt" kopiert.       #'
'########################################################################################################################'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'Variablendeklaration
Dim Ordner_Zaehler As Integer
Dim Zaehler_mapping As Integer
Dim strFile As String
Dim strTmp As String
Dim Startstring As String
Dim Typ As String
Dim Uebergabe_Array As Variant
Dim vntText As Variant

'WORD-Pfad ermitteln
GS_Ordnername_csv = Dokument_Bearbeitung.TextBox15.Value                        'Übergeben des Ordnernamens, in dem die Quell-.cvs-Datei liegt
Typ = ".vsdx"                                                                   'Festlegung des gesuchten Dateityps
Startstring = GS_Pfad_WORD & "\" & Dokument_Bearbeitung.TextBox11.Value & "\"   'Pfad in dem die Suche nach Visio-Dateien beginnt
Find = Dir(Startstring, vbDirectory)                                            'Suche auf festgelegten Pfad beziehen

'Vorbelegung der Zähler
GI_Dateizaehler = 0                                                             'Zähler für die gefundenen Visio-Dateien
Ordner_Zaehler = 0                                                              'Zähler für gefundene Ordner in Ebene 1

'Schleife zum Durchsuchen der 1sten Ordnerebene nach .vsdx-Dateien
Do Until Find = ""                                                              'solange eine Datei oder Ordner gefunden wird,
    
    'Abfrage, ob .vsdx-Datei gefunden wurde
    If InStr(Find, Typ) <> 0 Then                                               'wenn .vsdx-Datei identifiziert wird, dann
        GA_Pfadliste(GI_Dateizaehler) = Startstring & Find                      'trage den Pfad inkl. Dateinamen in Array ein
        GI_Dateizaehler = GI_Dateizaehler + 1                                   'inkrementiere den Zähler für gefundene Dateien um "1"
    End If                                                                      'Abfrage beenden
    
    'Abfrage ob ein Ordner gefunden wurde -> "." ".." wird ausgeschlossen
    If Find <> ".." And InStr(Find, ".") = 0 Then                               'wenn ein Ordner identifiziert wurde, dann
        GA_Ordnerliste_1(Ordner_Zaehler) = Startstring & Find & "\"              'trage den Pfad inkl. Ordnernamen in Array ein
        Ordner_Zaehler = Ordner_Zaehler + 1                                     'inkrementiere den Zähler für gefundene Ordner um "1"
    End If                                                                      'Abfrage beenden
    
    Find = Dir()                                                                'Suche fortsetzen
Loop                                                                            'Sprungmarke der Suchschleife

'###############################################
'Aufruf der Module für die tieferen Ordnerebenen
'###############################################
'***************************************************************************
'Bearbeitung erster Ebene
Uebergabe_Array = GA_Ordnerliste_1()                                        'Mappen des zu sortierenden Arrays in Übergabevariable
Call Ordnerlisten_sortieren(Uebergabe_Array)                                'Aufruf der Funktion zum Sortieren

'Schleife zum Mappen des Übergabe_Array in globales Array
For Zaehler_mapping = LBound(GA_Ordnerliste_1) To UBound(GA_Ordnerliste_1)  'feldweises Hochzählen des Zählers
    GA_Ordnerliste_1(Zaehler_mapping) = Uebergabe_Array(Zaehler_mapping)    'feldweises Übergeben des Inhaltes aus Übergabe_Array
Next Zaehler_mapping                                                        'Sprungmarke Schleife
'***************************************************************************
'Bearbeitung zweiter Ebene
Call Ebene2(Typ)                                                            'Aufruf der Funktion zum auslesen der zweiten Ordnerebene
Uebergabe_Array = GA_Ordnerliste_2()                                        'Mappen des zu sortierenden Arrays in Übergabevariable
Call Ordnerlisten_sortieren(Uebergabe_Array)                                'Aufruf der Funktion zum Sortieren

For Zaehler_mapping = LBound(GA_Ordnerliste_2) To UBound(GA_Ordnerliste_2)  'feldweises Hochzählen des Zählers
    GA_Ordnerliste_2(Zaehler_mapping) = Uebergabe_Array(Zaehler_mapping)    'feldweises Übergeben des Inhaltes aus Übergabe_Array
Next Zaehler_mapping                                                        'Sprungmarke Schleife
'***************************************************************************
'Bearbeitung dritter Ebene
Call Ebene3(Typ)                                                            'Aufruf der Funktion zum auslesen der dritten Ordnerebene
Uebergabe_Array = GA_Ordnerliste_3()                                        'Mappen des zu sortierenden Arrays in Übergabevariable
Call Ordnerlisten_sortieren(Uebergabe_Array)                                'Aufruf der Funktion zum Sortieren

For Zaehler_mapping = LBound(GA_Ordnerliste_3) To UBound(GA_Ordnerliste_3)  'feldweises Hochzählen des Zählers
    GA_Ordnerliste_3(Zaehler_mapping) = Uebergabe_Array(Zaehler_mapping)    'feldweises Übergeben des Inhaltes aus Übergabe_Array
Next Zaehler_mapping                                                        'Sprungmarke Schleife
'***************************************************************************
'Bearbeitung vierter Ebene
Call Ebene4(Typ)                                                            'Aufruf der Funktion zum auslesen der vierten Ordnerebene
Uebergabe_Array = GA_Ordnerliste_4()                                        'Mappen des zu sortierenden Arrays in Übergabevariable
Call Ordnerlisten_sortieren(Uebergabe_Array)                                'Aufruf der Funktion zum Sortieren

For Zaehler_mapping = LBound(GA_Ordnerliste_4) To UBound(GA_Ordnerliste_4)  'feldweises Hochzählen des Zählers
    GA_Ordnerliste_4(Zaehler_mapping) = Uebergabe_Array(Zaehler_mapping)    'feldweises Übergeben des Inhaltes aus Übergabe_Array
Next Zaehler_mapping                                                        'Sprungmarke Schleife
'***************************************************************************
'Bearbeitung fünfter Ebene
Call Ebene5(Typ)                                                            'Aufruf der Funktion zum auslesen der fünften Ordnerebene
Uebergabe_Array = GA_Ordnerliste_5()                                        'Mappen des zu sortierenden Arrays in Übergabevariable
Call Ordnerlisten_sortieren(Uebergabe_Array)                                'Aufruf der Funktion zum Sortieren

For Zaehler_mapping = LBound(GA_Ordnerliste_5) To UBound(GA_Ordnerliste_5)  'feldweises Hochzählen des Zählers
    GA_Ordnerliste_5(Zaehler_mapping) = Uebergabe_Array(Zaehler_mapping)    'feldweises Übergeben des Inhaltes aus Übergabe_Array
Next Zaehler_mapping                                                        'Sprungmarke Schleife
'***************************************************************************
'Bearbeitung sechster Ebene
Call Ebene6(Typ)                                                            'Aufruf der Funktion zum auslesen der sechsten Ordnerebene
Uebergabe_Array = GA_Ordnerliste_6()                                        'Mappen des zu sortierenden Arrays in Übergabevariable
Call Ordnerlisten_sortieren(Uebergabe_Array)                                'Aufruf der Funktion zum Sortieren

For Zaehler_mapping = LBound(GA_Ordnerliste_6) To UBound(GA_Ordnerliste_6)  'feldweises Hochzählen des Zählers
    GA_Ordnerliste_6(Zaehler_mapping) = Uebergabe_Array(Zaehler_mapping)    'feldweises Übergeben des Inhaltes aus Übergabe_Array
Next Zaehler_mapping                                                        'Sprungmarke Schleife
'***************************************************************************
'Bearbeitung siebter Ebene
Call Ebene7(Typ)                                                            'Aufruf der Funktion zum auslesen der siebten Ordnerebene
Uebergabe_Array = GA_Ordnerliste_7()                                        'Mappen des zu sortierenden Arrays in Übergabevariable
Call Ordnerlisten_sortieren(Uebergabe_Array)                                'Aufruf der Funktion zum Sortieren

For Zaehler_mapping = LBound(GA_Ordnerliste_7) To UBound(GA_Ordnerliste_7)  'feldweises Hochzählen des Zählers
    GA_Ordnerliste_7(Zaehler_mapping) = Uebergabe_Array(Zaehler_mapping)    'feldweises Übergeben des Inhaltes aus Übergabe_Array
Next Zaehler_mapping                                                        'Sprungmarke Schleife
'***************************************************************************
'Bearbeitung achter Ebene
Call Ebene8(Typ)                                                            'Aufruf der Funktion zum auslesen der achten Ordnerebene
Uebergabe_Array = GA_Ordnerliste_8()                                        'Mappen des zu sortierenden Arrays in Übergabevariable
Call Ordnerlisten_sortieren(Uebergabe_Array)                                'Aufruf der Funktion zum Sortieren

For Zaehler_mapping = LBound(GA_Ordnerliste_8) To UBound(GA_Ordnerliste_8)  'feldweises Hochzählen des Zählers
    GA_Ordnerliste_8(Zaehler_mapping) = Uebergabe_Array(Zaehler_mapping)    'feldweises Übergeben des Inhaltes aus Übergabe_Array
Next Zaehler_mapping                                                        'Sprungmarke Schleife
'***************************************************************************
'Bearbeitung neunter Ebene
Call Ebene9(Typ)                                                            'Aufruf der Funktion zum auslesen der neunten Ordnerebene
Uebergabe_Array = GA_Ordnerliste_9()                                        'Mappen des zu sortierenden Arrays in Übergabevariable
Call Ordnerlisten_sortieren(Uebergabe_Array)                                'Aufruf der Funktion zum Sortieren

For Zaehler_mapping = LBound(GA_Ordnerliste_9) To UBound(GA_Ordnerliste_9)  'feldweises Hochzählen des Zählers
    GA_Ordnerliste_9(Zaehler_mapping) = Uebergabe_Array(Zaehler_mapping)    'feldweises Übergeben des Inhaltes aus Übergabe_Array
Next Zaehler_mapping                                                        'Sprungmarke Schleife
'***************************************************************************




'Erzeugen der Textdatei "Dateiliste_m_Pfad"
strFile = GS_Pfad_WORD & "\" & GS_Ordnername_csv & "\" & "Dateiliste_m_Pfad.txt" 'Pfad, in welchem die Textdatei erzeugt werden soll
Open strFile For Output As 1#                                                   'Öffnen der Textdatei un vorbereiten zum einfügen des Arrays
Print #1, Join(GA_Pfadliste(), VBA.Chr(13))                                     'einfügen des Arrays
Close #1                                                                        'Schließen der Textdatei

End Sub                                                                         'Bausteinende

Fall zu daran interessiert bist, hier die Sortierfunktion in alphabetischer Reihenfolge der Ordner:
 

Sub Ordnerlisten_sortieren(Uebergabe_Array As Variant)

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'########################################################################################################################'
'#Dieses Modul sortiert den übergebenen Arrayinhalt alphabetisch.                                                       #'
'#Dies ist notwendig, um etwaige Sonderzeichen in den Ordnernamen bei der Sortierung zu berücksichtigen.                #'
'#Das Übergabe_Array kann im aufrufenden Modul auf ein glob. Array gemappt werden.(siehe B04_Pfadliste_erstellen_Main)  #'
'########################################################################################################################'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'Variablendeklaration
Dim x As Long, y As Long
Dim TempTxt1 As String
Dim TempTxt2 As String

'alphabetische Sortierung des Arrays
'Schleife für den feldweisen Arraydurchlauf
For x = LBound(Uebergabe_Array) To UBound(Uebergabe_Array)
    'Schleife für den feldweisen Vergleich des Array
    For y = x To UBound(Uebergabe_Array)
        'Abfrage, ob die alphabetische Reihenfolge eingehalten wird
        If LCase(Uebergabe_Array(y)) < LCase(Uebergabe_Array(x)) And Uebergabe_Array(y) <> "" Then  'wenn Reihenfolge nicht stimmt, dann vertausche die Position im Array
            TempTxt1 = Uebergabe_Array(x)                                                           'dafür Zwischenspeichern des String in Feld"x"
            TempTxt2 = Uebergabe_Array(y)                                                           'dafür Zwischenspeichern des String in Feld"y"
            Uebergabe_Array(x) = TempTxt2                                                           'Zwischenspeicher "y" in Feld "x" kopieren
            Uebergabe_Array(y) = TempTxt1                                                           'Zwischenspeicher "x" in Feld "y" kopieren
        End If                                                                                      'Abfrage Reihenfolge beenden
    Next y                                                                                          'Sprungmarke feldweiser Vergleich
Next x                                                                                              'Sprungmarke feldweiser Arraydurchlauf

End Sub                                                                                             'Funktionsende

Und hier nochmal der Code, für die nächst tiefere Ebene:

Sub Ebene2(Typ As String)

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'########################################################################################################################'
'#Sub-Modul zum Durchsuchen der 2ten Ordnerebene, die Visio-Dateinen enthalten kann.                                    #'
'########################################################################################################################'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'Variablendeklaration
Dim Zaehler_Schleife As Integer
Dim Ordner_Zaehler As Integer
Dim Inhalt_Arrayzeile As String

'Vorbelegung des Schleifen-Zähler
Zaehler_Schleife = 0                                                            'Zähler für die Schleifendurchläufe des Ordner-Array
                                                                                
'Schleife zum Durchsuchen der gefundenen Ordner aus 1ster Ebene
Do Until GA_Ordnerliste_1(Zaehler_Schleife) = ""                                 'solange das Array noch einen Pfad enthält,
    Inhalt_Arrayzeile = GA_Ordnerliste_1(Zaehler_Schleife)                       'kopiere den Inhalt aus der aktuellen Arrayzeile in Variable
    Find = Dir(Inhalt_Arrayzeile, vbDirectory)                                  'Suche auf festgelegten Pfad beziehen
    
    'Schleife zum Durchsuchen der 2ten Ordnerebene nach .vsdx-Dateien
    Do Until Find = ""
        
        'Abfrage, ob .vsdx-Datei gefunden wurde
        If InStr(Find, Typ) <> 0 Then                                           'wenn .vsdx-Datei identifiziert wird, dann
            GA_Pfadliste(GI_Dateizaehler) = Inhalt_Arrayzeile & Find            'trage den Pfad inkl. Dateinamen in Array ein
            GI_Dateizaehler = GI_Dateizaehler + 1                               'inkrementiere den Zähler für gefundene Dateien um "1"
        End If                                                                  'Abfrage beenden
        
        'Abfrage ob ein Ordner gefunden wurde -> "." ".." wird ausgeschlossen
        If Find <> ".." And InStr(Find, ".") = 0 Then                           'wenn ein Ordner identifiziert wurde, dann
            GA_Ordnerliste_2(Ordner_Zaehler) = Inhalt_Arrayzeile & Find & "\"    'trage den Pfad inkl. Ordnernamen in Array ein
            Ordner_Zaehler = Ordner_Zaehler + 1                                 'inkrementiere den Zähler für gefundene Ordner um "1"
        End If                                                                  'Abfrage beenden
        
        Find = Dir()                                                            'Suche fortsetzen
    Loop                                                                        'Sprungmarke der Suchschleife
    
    Zaehler_Schleife = Zaehler_Schleife + 1                                     'inkrementiere den Zähler für aktuelle Arrayzeile "1"
Loop                                                                            'Sprungmarke der Ordner-Array-Schleife

End Sub                                                                         'Bausteinende

Vielleicht kannst du ja etwas davon gebrauchen.
 

Beste Grüße aus Hamburg
Andreas

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
18.06.2018 22:23:40 Wayne
NotSolved
19.06.2018 08:30:36 Gast77560
NotSolved
Rot Dateien aus Ordnerstruktur öffnen
19.06.2018 11:27:39 Andreas
NotSolved
19.06.2018 11:37:52 Gast39314
NotSolved