Thema Datum  Von Nutzer Rating
Antwort
17.01.2018 14:31:13 Tim
NotSolved
Blau Excel Tabellen aus Unterordnern in eine Tabelle zusammenführen
17.01.2018 15:48:53 Gast70936
NotSolved

Ansicht des Beitrags:
Von:
Gast70936
Datum:
17.01.2018 15:48:53
Views:
492
Rating: Antwort:
  Ja
Thema:
Excel Tabellen aus Unterordnern in eine Tabelle zusammenführen

Hallo Tim,

ich habe mal etwas ähnliches gemacht aber in WORD-VBA.

da habe ich einen Stammpfad gehabt wie z.B. C:\Test\.. in diesem lagen .vsdx-Dateien sowhol im Hauptfolder und auch in mehreren Sub-Foldern.
 

Ich habe dann im Hauptordner angefangen alle Subs zu ermitteln und diese in ein Array geschrieben du kannst wg. der Handhabung auch normale Variablen nehmen.
Danach bin ich in einen Sub nach dem anderen gegangen und habe hier nochmal nach Ordnern gesucht und diese ins Array geschrieben.

So kannst du dir natürlich alle notwendigen Pfade zusammenbasten in denen dann deine Dateinen liegen.
Ausgelegt hatte ich es damal für 9 Sub-Ebenen

Hier mal ein bisschen Code:

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

Hier nochmal der Code für Ebene2:
 

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 damit anfangen


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
17.01.2018 14:31:13 Tim
NotSolved
Blau Excel Tabellen aus Unterordnern in eine Tabelle zusammenführen
17.01.2018 15:48:53 Gast70936
NotSolved