2016-11-22 17 views
0

我正在处理下面的脚本,并试图将数据从另一个(目标)工作簿拉入源工作簿。该脚本正在工作,除了只拉单行(它应该拉12+)。经过一些调试之后,我发现它只是覆盖了前一行,所以我只剩下目标数据的最后一行。我不确定它为什么这样做。我没有任何合并的单元格,并且源工作簿中没有任何内容。VBA脚本不拉数据 - 重叠

下面的代码:

Select Code 
    Dim salesWB As Workbook 
    Dim mrpWB As Workbook 
    Dim Ret As Boolean 
    Dim SalesStaging As String, SW As Range   

    SalesStaging = "SalesStaging.xlsm" 
    Set salesWB = Workbooks.Open(SalesStaging) 
    Set salesWB = Workbooks("SalesStaging.xlsm") 
    Set mrpWB = ThisWorkbook 


    With salesWB.Worksheets("SendToMRP") 
     For Each SW In .Range(.Cells(2, 1), .Cells(Rows.count, 1).End(3)) 
      With mrpWB.Worksheets("Sales & Returns").Cells(Rows.count, 1).End(xlUp) 
       .Offset(1, 1) = SW.Offset(0, 0) ' OrderId 
       .Offset(1, 2) = SW.Offset(0, 1) ' StoreFront 
       .Offset(1, 3) = SW.Offset(0, 2) ' OrderType 
       .Offset(1, 4) = SW.Offset(0, 3) ' PurchaseDate 
       .Offset(1, 5) = SW.Offset(0, 4) ' ShipmentServiceLabelCategory 
       .Offset(1, 6) = SW.Offset(0, 5) ' Title 
       .Offset(1, 7) = SW.Offset(0, 6) ' SellersSKU 
       .Offset(1, 8) = SW.Offset(0, 7) ' QtySold 
       .Offset(1, 9) = SW.Offset(0, 8) ' ShippingCost 
       .Offset(1, 10) = SW.Offset(0, 9) ' Discounts 
       .Offset(1, 11) = SW.Offset(0, 10) ' ItemPrice 
       ' .Offset(0, 0) = SW.Offset(0, 11) ' OrderTotal 
       .Offset(1, 20) = SW.Offset(0, 12) ' LatestShipDate 
       .Offset(1, 21) = SW.Offset(0, 13) ' SAState 
       .Offset(1, 22) = SW.Offset(0, 14) ' SACity 
       .Offset(1, 23) = SW.Offset(0, 15) ' SAPhone 
       .Offset(1, 24) = SW.Offset(0, 16) ' SAPostalCode 
       .Offset(1, 25) = SW.Offset(0, 17) ' SAName 
       .Offset(1, 26) = SW.Offset(0, 18) ' SAddress 
       .Offset(1, 27) = SW.Offset(0, 19) ' IsPrime 
      End With 
     Next 
    End With 
+0

您使用的是全球'Rows'对象 - 你需要使用'mrpWB.Worksheets( “销售和退货”)Rows.Count'。 – Comintern

回答

1

你决定通过寻找在A列中最后一个非空单元格写哪一行,但你从来不写任何东西列A,所以你永远是每次通过循环选择相同的行。

尝试以下操作:

Dim salesWB As Workbook 
Dim mrpWB As Workbook 
Dim Ret As Boolean 
Dim SalesStaging As String, SW As Range   

SalesStaging = "SalesStaging.xlsm" 
Set salesWB = Workbooks.Open(SalesStaging) 
Set salesWB = Workbooks("SalesStaging.xlsm") 
Set mrpWB = ThisWorkbook 


With salesWB.Worksheets("SendToMRP") 
    For Each SW In .Range(.Cells(2, 1), .Cells(.Rows.count, 1).End(3)) 
     With mrpWB.Worksheets("Sales & Returns").Cells(mrpWB.Worksheets("Sales & Returns").Rows.count, 2).End(xlUp) 
      .Offset(1, 0) = SW.Offset(0, 0) ' OrderId 
      .Offset(1, 1) = SW.Offset(0, 1) ' StoreFront 
      .Offset(1, 2) = SW.Offset(0, 2) ' OrderType 
      .Offset(1, 3) = SW.Offset(0, 3) ' PurchaseDate 
      .Offset(1, 4) = SW.Offset(0, 4) ' ShipmentServiceLabelCategory 
      .Offset(1, 5) = SW.Offset(0, 5) ' Title 
      .Offset(1, 6) = SW.Offset(0, 6) ' SellersSKU 
      .Offset(1, 7) = SW.Offset(0, 7) ' QtySold 
      .Offset(1, 8) = SW.Offset(0, 8) ' ShippingCost 
      .Offset(1, 9) = SW.Offset(0, 9) ' Discounts 
      .Offset(1, 10) = SW.Offset(0, 10) ' ItemPrice 
      ' .Offset(0, 0) = SW.Offset(0, 11) ' OrderTotal 
      .Offset(1, 19) = SW.Offset(0, 12) ' LatestShipDate 
      .Offset(1, 20) = SW.Offset(0, 13) ' SAState 
      .Offset(1, 21) = SW.Offset(0, 14) ' SACity 
      .Offset(1, 22) = SW.Offset(0, 15) ' SAPhone 
      .Offset(1, 23) = SW.Offset(0, 16) ' SAPostalCode 
      .Offset(1, 24) = SW.Offset(0, 17) ' SAName 
      .Offset(1, 25) = SW.Offset(0, 18) ' SAddress 
      .Offset(1, 26) = SW.Offset(0, 19) ' IsPrime 
     End With 
    Next 
End With 
+0

谢谢!对此,我真的非常感激!! – Twigs