2017-02-03 4 views
0

Ich habe Szenario: Workbook1, Workbook2, Workbook3 und Workbook4. Jede dieser Arbeitsmappen hat einen Blattnamen wsheet_a. Ich lege mein Makro in die Master-Arbeitsmappe mit dem Namen master_file und wollte die wsheet_a-Arbeitsblätter in jeder Arbeitsmappe zu mf_wsheet in der master_file-Arbeitsmappe ab einer bestimmten Zeile (d. H. Row 2) konsolidieren. Und wenn ich das Makro erneut ausführe, ersetze es die vorhandenen Daten in mf_wsheet. Jede Hilfe wird sehr geschätzt.Makro Excel konsolidieren viele Arbeitsmappen mit demselben Arbeitsblatt-Name

+0

haben Sie einen Code noch geschrieben? Sie werden damit beginnen, alle Arbeitsmappen durchzublättern, um das Blatt zu finden. etwas wie. 'Dim wb Als Arbeitsmappe, ws Wie Arbeitsblatt For Each wb in Application.Workbooks For Each ws in wb.Worksheets Wenn ws.name = "wsheet_a" ‚Dann tun, was Sie End If Next ws tun müssen Nächste wb ' – excelledsoftware

Antwort

0

Try this ... (Sie müssen das Makro mit dem Pfad zu Ihrer Arbeitsmappe aktualisieren)

Option Explicit 

Sub Compile_Workbook_Data() 

    Dim master_wkbk As Workbook: Set master_wkbk = ThisWorkbook 
    Dim master_sht As Worksheet: Set master_sht = ThisWorkbook.Worksheets("mf_wsheet") 
    Dim current_wkbk As Workbook 
    Dim current_sht As Worksheet 
    Dim wkbk_list(1 To 4) As String 
    Dim x As Integer 
    Dim last_row As Integer 
    Dim last_col As Integer 

    wkbk_list(1) = "Workbook1.xlsx" 
    wkbk_list(2) = "Workbook2.xlsx" 
    wkbk_list(3) = "Workbook3.xlsx" 
    wkbk_list(4) = "Workbook4.xlsx" 

    For x = 1 To UBound(wkbk_list) 

     Set current_wkbk = Workbooks.Open("Full Path to File" & wkbk_list(x)) 
     Set current_sht = current_wkbk.Worksheets("wsheet_a") 

     last_row = current_sht.Cells.Find("*", searchorder:=xlByRows, SearchDirection:=xlPrevious).Row 
     last_col = current_sht.Cells.Find("*", searchorder:=xlByColumns, SearchDirection:=xlPrevious).Column 

     current_sht.Range(Cells(1, 1), Cells(last_row, last_col)).Copy 

     last_row = master_sht.Cells.Find("*", searchorder:=xlByRows, SearchDirection:=xlPrevious).Row 
     master_sht.Range("A" & last_row + 1).PasteSpecial Paste:=xlPasteValues 

     current_wkbk.Close False 

    Next x 

End Sub 
Verwandte Themen