2017-07-19 160 views
0

我有一个工作簿90000线和三个工作表(Sheet 1中Sheet 2中,表Sheet 3)Excel宏:分流工作簿

表1具有主数据(90000个系)

表2有一些数据

表3有一些数据

我要的是将表1中的数据拆分为5000行,拷贝表2和表3原样,然后将其另存为“filename-1”。我想为所有线路做到这一点。我还需要所有分割文件中的标题。我想将它保存为xml格式。

如果任何人能帮助将是伟大的!

我目前来到这里,只拆分sheet1,不复制标题和sheet2和3.并不保存为xml。 [为了示例的目的,我已经在每5行之后保留这一点]

Sub Macro1() 
    Dim rLastCell As Range 
    Dim rCells As Range 
    Dim strName As String 
    Dim lLoop As Long, lCopy As Long 
    Dim wbNew As Workbook 

    With ThisWorkbook.Sheets(1) 
     Set rLastCell = .Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious) 

     For lLoop = 1 To rLastCell.Row Step 5 
      lCopy = lCopy + 1 
      Set wbNew = Workbooks.Add 
      .Range(.Cells(lLoop, 1), .Cells(lLoop + 5, .Columns.Count)).EntireRow.Copy _ 
       Destination:=wbNew.Sheets(1).Range("A1") 
      wbNew.Close SaveChanges:=True, Filename:="Chunk" & lCopy & "Rows" & lLoop & "-" & lLoop + 5 
     Next lLoop 
    End With 
End Sub 
+0

你在哪里复制表2和表3到 – jsotola

+0

表2和3副本将所有拆分工作表。因此,一个新的工作簿将在表格1中包含标题和5000行,整个表格2和整个表格3. – woollen19

+0

您知道如何“新工作簿”,“复制行”和“复制工作表”,我认为这不应该一个问题来完成整个任务。对于保存为xml,您可以在[搜索]或谷歌搜索,它有很多样本供您参考。 – Prisoner

回答

0

下面是代码的伎俩!可能对某人有帮助。

Sub Macro1() 
Dim inputFile As String, inputWb As Workbook 
    Dim lastRow As Long, row As Long, n As Long 
    Dim newCSV As Workbook 

With ActiveWorkbook.Worksheets(1) 
    lastRow = .Cells(Rows.Count, "A").End(xlDown).row 

    Set newCSV = Workbooks.Add 

    n = 0 
    For row = 2 To lastRow Step 5 
     n = n + 1 
     .Rows(1).EntireRow.Copy newCSV.Worksheets(1).Range("A1") 
     .Rows(row & ":" & row + 5 - 1).EntireRow.Copy newCSV.Worksheets(1).Range("A2") 

     'Save in same folder as input workbook with .xlsx replaced by (n).csv 
     newCSV.SaveAs Filename:=n & ".CSV", FileFormat:=xlCSV, CreateBackup:=False 
    Next 
End With 

newCSV.Close saveChanges:=False 

End Sub 
相关问题