2017-01-31 3 views
0

Ich hoffe, dass jemand helfen kann.Zusammenführen von Arbeitsmappen nach Registerkartenname

Ich suche mehrere Arbeitsmappen in Excel zusammen, aber jede Arbeitsmappe hat 8-10 Tabs, die ich nicht brauche und ich eigentlich nur eine einzige Registerkarte wollen, ich habe die folgende Formel bereits, die die Arbeitsmappen kombiniert, aber Ich bin mir nicht sicher, was ich tun soll, um nur die einzelnen Tabs zu kombinieren, die ich brauche. Sie sind in allen Arbeitsmappen identisch.

Sub GetSheets() 
Path = "C:\Users\dt\Desktop\dt kte\" 
Filename = Dir(Path & "*.xls") 

    Do While Filename <> "" 
    Workbooks.Open Filename:=Path & Filename, ReadOnly:=True 
    For Each Sheet In ActiveWorkbook.Sheets 
    Sheet.Copy After:=ThisWorkbook.Sheets(1) 
    Next Sheet 
    Workbooks(Filename).Close 
    Filename = Dir() 
    Loop 
End Sub 

Danke

+0

ändern, die Registerkarte benötigen Sie ? Nach der Zeile "Für Eac Sheet ..." können Sie sagen: "I Sheet.Name =" SheetIWant "Dann" kopieren "Sie die' Worksheets ("SheetIWant") 'data ... – BruceWayne

+0

@BruceWayne Entschuldigung, ich bin ein bisschen verwirrt. Wie würde das im Code aussehen? – AKER

+0

"... ich möchte eigentlich nur einen einzigen Tab, ...." Woher weißt du, welchen Tab du willst? Hat es in jeder Arbeitsmappe den gleichen Namen? – BruceWayne

Antwort

0

Wenn Sie nur ein bestimmtes Blatt von jedem kopiert werden müssen, (zwicken nur SHEETNAME, was auch immer das ist) die folgenden sollte funktionieren

Sub GetSheets() 
dim mainWB as Workbook 
Set mainWB = ThisWorkbook 
Path = "C:\Users\dt\Desktop\dt kte\" 
Filename = Dir(Path & "*.xls") 

    Do While Filename <> "" 
    Workbooks.Open Filename:=Path & Filename, ReadOnly:=True 
    For Each Sheet In ActiveWorkbook.Sheets 
    If sheet.Name = "SHEETNAME" then 
     Sheet.Copy After:=mainWB.Sheets(1) 
    End if 
    Next Sheet 
    Workbooks(Filename).Close 
    Filename = Dir() 
    Loop 
End Sub 
+0

Das ist unglaublich, vielen Dank !!!! @Bruce Wayne – AKER

1

es ist einer jener Fälle, wo würde ich die berüchtigte Anweisung bewusst verwenden und vermeiden, durch eine Sammlung (nämlich Worksheets eins)

weiterhin ThisWorkbook verweist immer die Arbeitsmappe das Ausführen von Code in so liegt es gibt keine Notwendigkeit für jede Variable Workbook Typ verweis

Sub GetSheets()   
    Path = "C:\Users\dt\Desktop\dt kte\" 
    Filename = Dir(Path & "*.xls") 

    On Error Resume Next 
    Do While Filename <> "" 
     Workbooks.Open(Filename:=Path & Filename, ReadOnly:=True).Worksheets("SHEETNAME").Copy After:=ThisWorkbook.Sheets(1) 
     ActiveWorkbook.Close False 
     Filename = Dir() 
    Loop 
End Sub 

nur SHEETNAME Sie tatsächlich benötigte Registerkarte Name

Verwandte Themen