2017-02-03 60 views
0

我有場景:Workbook1,Workbook2,Workbook3和Workbook4。這些工作簿中的每一個都有一個工作表名稱wsheet_a。我將宏寫入名爲master_file的主工作簿,並且我想將每個工作簿中的wsheet_a工作表整合到master_file工作簿中從特定行(例如2)開始的mf_wsheet。一旦我重新運行宏,它將替換mf_wsheet中的現有數據。任何幫助是極大的讚賞。宏Excel整合許多具有相同工作表名稱的工作簿

+0

你編寫任何代碼了嗎?您將希望循環遍歷所有工作簿以查找工作表。就像是。 '昏暗WB作爲工作簿,WS作爲工作表 對於Application.Workbooks 每個WB對於wb.Worksheets 每個WS如果ws.name =「wsheet_a」然後 「做你需要做的 結束如果 下一步WS什麼 下一個wb ' – excelledsoftware

回答

0

嘗試......(你需要與路徑宏更新到您的工作簿)

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 
相關問題