2015-10-20 181 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

相关问题