2015-10-20 164 views
0

從一個工作簿傳輸到另一個工作簿的VBA代碼。例如,我有一個工作簿,每個部門有多個工作表。一旦項目完成,我手動複製並粘貼到完成的工作簿。我需要幫助創建一個VBA代碼,只將完成的項目更新爲完成的主工作簿。我嘗試了下面的VBA代碼,但它將所有的工作表傳輸到一個工作表,而這不是我正在尋找的。從一個工作簿傳輸到另一個工作簿

Sub SummurizeSheets() 
    Dim ws As Worksheet 
    Application.ScreenUpdating = False 
    Sheets("Sales").Activate 
    For Each ws In Worksheets 
     If ws.Name <> "Sales" Then 
      ws.Range("A2:K45").Copy 
      Worksheets("Sales").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues) 
     End If 
    Next ws 
End Sub 

我需要單元格A2:I45複製已完成主簿,如果電池i有完成它的項目。希望這是有道理的,否則我可以附上excel工作簿。 所以,我有4個工作表的每個銷售地點。例如worksheet1是Sales,然後是其他Sales2 ... ect ...所有工作表包含相同的數據,但不同的部門區域編輯每個工作表,這就是爲什麼有多個工作表。一旦它們全部由各個部門完成,我希望這4個工作表轉移到完成的工作簿中的一個工作表中。

+0

澄清,讓你複製和各部門的工作表粘貼到另一個工作簿中的每個部門的工作表相同,但只包含那些完成?而不是把所有的工作表合併到一個? – L42

+0

那麼,我有一個Excel電子表格與多個部門和每個工作表包含相同的標題行。每個部門都會向其相應部門添加評論和更改,並標記每個項目已完成或未完成。將每個部門選項卡中的所有已完成項目傳輸到完整的Excel工作簿。我們只使用帶有多個選項卡的工作表進行數據輸入和更新,直到它們完成。因此,我們會在月底將所有已完成的項目合併到一個項目中,並從每個選項卡中刪除它們。 – BKGirl

回答

0

更新時間:

Sub SummarizeSheets() 
    Dim ws As Worksheet, rw As Range, cDest As Range 
    Dim wbDest As Workbook, wbSource As Workbook 
    Dim rngSrc As Range, x As Long 

    Set wbSource = ActiveWorkbook 'set source of data 

    ' set the destination for completed items: adjust names to suit 
    Set wbDest = Workbooks("Completed.xlsx") ' must be already open ! 
    Set cDest = wbDest.Worksheets("Complete").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 

    Application.ScreenUpdating = False 

    For Each ws In wbSource.Worksheets 
     If ws.Name <> "Sales" Then 
      Set rngSrc = ws.Range("A2:K45") 
      ' step backwards since we might be deleting rows... 
      For x = rngSrc.Rows.Count To 1 Step -1 
       Set rw = rngSrc.Rows(x) 
       If UCase(rw.Cells(1, "I").Value) = "COMPLETED" Then 
        cDest.Resize(1, rw.Columns.Count).Value = rw.Value 
        rw.EntireRow.Delete   'delete from source 
        Set cDest = cDest.Offset(1, 0) 'set next destination row 
       End If 
      Next x 
     End If 
    Next ws 
End Sub 
+0

我試過這段代碼,但沒有奏效。因此,我所得到的是一個彙總表,其中包含A到I的單元格,「I」表示該行將顯示該項目是否已完成或掛起,並且所有已完成的項目需要轉移到已完成的工作簿並刪除完成。我有多個工作表,但我可以一次運行一個宏。 – BKGirl

+0

「已完成」工作簿是否與源工作簿具有相同的工作表名稱,還是隻有一個工作表? Col I中的什麼值表示源工作表中的項目已完成? (你提到Col K上面 - 現在是我嗎?) –

+0

是完成的工作簿與源工作簿名稱不同。它只是一個存儲源工作簿中所有數據的工作表。是的,我在K上的錯誤,它應該是我。 – BKGirl

相關問題