jobo: Excel, VBA, Arbeitsmappen, Tabellen, Spalten, Zellen

Beitrag lesen

Hallo Vinzenz,

eine Liste des Ordnerinhaltes erstellen klappt:

Pfad1 = FileSystem.CurDir & ""   ' Pfad setzen.
Name1 = Dir(Pfad1)     ' erster Eintrag
Do While Name1 <> ""    ' Schleife beginnen.
    ' Aktuelles und übergeordnetes Verzeichnis ignorieren.
    If Name1 <> "." And Name1 <> ".." Then
       Debug.Print Name1
    End If
    Name1 = Dir    ' Nächsten Eintrag abrufen.
Loop

Wenn ich aber mit Workbooks.Open jetzt eine Datei öffnen würde, wäre die ja das ActiveWorkbook, nicht wahr? Ich würde aber gerne aus der geöffneten Datei aus deren Tabellen was auslesen und das dann in mein Ausgabe.xls-Workbook reinschreiben.

Momentan habe ich das ohne das Dictonary gemacht, aber alles innehalb eines Workbooks, dort dann ein Worksheet namens "Ausgabe". Ich durchlaufe dort Worksheets, die nicht "Ausgabe" heißen, durchlauf dort die Spalte B, durchlaufe für jeden Wert im Worksheet "Ausgabe"-Spalte C und schaue dort, ob es schon einen Eintrag für die fragliche Kategorie (Spalte C der aktuellen Produkttabelle) gibt. Wenn ja, addiere ich den Wert aus der Produkttabelle dazu, wenn nicht, mache ich einen neuen Eintrag in Spalte C und B des "Ausgabe"-Worksheets:

For Each actualWs In Worksheets 'durchlaufe Worksheets
    RowCount = actualWs.UsedRange.Rows.Count
    If actualWs.Name <> "Ausgabe" Then ' in Ausgabe steht ja die Ausgabe
    For Each mycell In actualWs.range("B1:B" & RowCount) 'Spalte B durchlaufen
        CatFound = "notfound" 'Kategorie auf "nicht gefunden setzen"
        RowCountAusgabe = Ausgabe.UsedRange.Rows.Count 'Zeilenzahl der Ausgabetabelle
        For Each myAusgabeCell In Ausgabe.range("C3:C" & RowCountAusgabe)
            'wenn Spalte C der Kategorie entspricht und Spalte B dem Tabellennamen
            If myAusgabeCell.Value = actualWs.range("C" & mycell.Row).Value _
            And Ausgabe.range("B" & myAusgabeCell.Row).Value = actualWs.Name Then
                Ausgabe.range("D" & myAusgabeCell.Row).Value = mycell.Value + Ausgabe.range("D" & myAusgabeCell.Row).Value
                CatFound = "found"
            End If
        Next
        'Falls Tabellenname-Katgorie-Pärchen in Ausgabe-Spalte B-C nicht gefunden
        If CatFound = "notfound" Then
            Ausgabe.range("B" & RowCountAusgabe + 1).Value = actualWs.Name
            Ausgabe.range("C" & RowCountAusgabe + 1).Value = actualWs.range("C" & mycell.Row).Value
            Ausgabe.range("D" & RowCountAusgabe + 1).Value = mycell.Value
            Debug.Print RowCountAusgabe
        End If
        counter = counter + 1
    Next
    End If
Next

O.g. spielt sich ja aber eben alles innheralb des ActiveWorkbook ab. Wie kriege ich denn ein zweites Workbook auf (Referenz darau, mit Set ???), so dass ich also eine Ausgabe.xls mit einer Tabelle (Worksheet) "Ausgabe" habe, in die ich die zusammengefassten Ergebnisse der anderen Workbooks und deren Worksheets eintrage.

Dank und Gruß

Robert