2017-09-03 26 views
0

示例數據:goo.gl/akWozD(假設有100萬行8列)如何將不同的固定行分成不同的格式?

如何編輯下面的VBA代碼,以不同的固定行生成不同的文件格式(CSV和Excel)?例如:InputBox將要求固定行的大小爲CSV,同時還要求固定行的大小爲Excel

所需的輸出將是CSV 1, CSV 2, CSV 3, etcExcel 1, Excel 2, Excel 3, etc其中CSV已X固定行和Excel已對Y固定的行,在同一文件夾。原始工作簿不會被更改/修改。宏運行時將詢問XY

謝謝。

Public Sub SplitFixedRows() 
    Dim wbOrig As Workbook 
    Dim wb As Workbook 
    Dim ThisSheet As Worksheet 
    Dim NumOfColumns As Integer 
    Dim RangeToCopy As Range 
    Dim RangeOfHeader As Range 
    Dim WorkbookCounter As Integer 
    Dim RowsInFile 

    Application.ScreenUpdating = False 
    RowsInFile = InputBox("Please enter data size +1 header (Example: 11, 101, 501): ") 

    Set wbOrig = ActiveWorkbook 
    Set ThisSheet = wbOrig.ActiveSheet 
    NumOfColumns = ThisSheet.UsedRange.Columns.Count 
    WorkbookCounter = 1 

    Set RangeOfHeader = ThisSheet.Range(ThisSheet.Cells(1, 1), ThisSheet.Cells(1, NumOfColumns)) 
    For p = 2 To ThisSheet.UsedRange.Rows.Count Step RowsInFile - 1 
    Set wb = Workbooks.Add 

    RangeOfHeader.Copy wb.Sheets(1).Range("A1") 

    Set RangeToCopy = ThisSheet.Range(ThisSheet.Cells(p, 1), ThisSheet.Cells(p + RowsInFile - 2, NumOfColumns)) 
    RangeToCopy.Copy wb.Sheets(1).Range("A2") 

    wb.SaveAs wbOrig.Path & "\Data " & WorkbookCounter 
    wb.Close 

    WorkbookCounter = WorkbookCounter + 1 
    Next p 

    Application.ScreenUpdating = True 
    Set wb = Nothing 
End Sub 
+0

confer [this](https://stackoverflow.com/questions/44582005/copying-dynamic-range-into-new-workbooks-adding-header-和節能,新的工作簿/ 44584306#44584306) –

回答

0

如果我正確理解了你,你只缺少生產CSV文件。這可以在下面的步驟來完成:

Dim FSO, wfile As Object 
Dim content As String 
Set FSO = CreateObject("Scripting.FileSystemObject") 
Set wfile = FSO.OpenTextFile("path to the file", 2) 'connection for writing 

'here you prepare whole content of the file 

wfile.Write content 
wfile.Close 

爲了準備文件的content,你只是追加到它在用逗號(或任何你想要的)連續分離單元格的值。要做到這一點,你只需要遍歷範圍:)

相關問題