【发布时间】:2020-03-27 23:07:00
【问题描述】:
我正在尝试创建一个 Excel 工具来将一张数据拆分为多个 .csv 文件,每个 csv 文件最多 200 行。
我的代码:
Dim CSheet As Worksheet
Dim LastRow As Long
Dim LastCol As Long
Dim currentFilePath As String
Dim filePath As String
Dim dataDate As String
Dim n As Integer
Dim r As Integer
Dim rowStartNumber As Integer
Dim rowEndNumber As Integer
Dim numOfFiles As Integer
'*****************************************************
' Declare variables
'*****************************************************
On Error Resume Next
Application.DisplayAlerts = False
Set CSheet = Worksheets("Cleaned_Data")
Worksheets("Cleaned_Data").Activate
LastRow = CSheet.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = CSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Debug.Print (Application.ActiveWorkbook.Path)
currentFilePath = Application.ActiveWorkbook.Path
numOfFiles = (LastRow - 1) / 200
dataDate = Format(Worksheets("Instructions").Cells(14, 2), "DD-MMM-YYYY")
filePath = currentFilePath & "\" & dataDate
'*****************************************************
' Check if folder exists; if yes delete and recreate
'*****************************************************
'if folder does not exist
If Dir(filePath, vbDirectory) = "" Then
MkDir filePath
Else
Kill filePath & "*.*"
RmDir filePath
MkDir filePath
End If
Debug.Print ("Hello")
' Loop to create the files
For n = 1 To numOfFiles
rowStartNumber = 2 + ((n - 1) * 200)
rowEndNumber = rowStartNumber + 199
Debug.Print (rowStartNumber & " - " & rowEndNumber)
For r = rowStartNumber To rowEndNumber
Debug.Print (rowStartNumber)
'Start to get data from Csheet, up to 200 rows, and write them into a new .csv file in filePath
Next r
Next n
循环部分是我正在努力解决的问题。我尝试了许多复制粘贴的方法,或者逐行迭代并写出 .csv 文件。如何使用 VBA 做到这一点?
' Loop to create the files
For n = 1 To numOfFiles
rowStartNumber = 2 + ((n - 1) * 200) 'first data row starts at row 2, due to headers
rowEndNumber = rowStartNumber + 199
Debug.Print (rowStartNumber & " - " & rowEndNumber)
For r = rowStartNumber To rowEndNumber
Debug.Print (rowStartNumber)
'Start to get data from Csheet, up to 200 rows, and write them into a new .csv file in filePath
Next r
Next n
【问题讨论】:
-
您最好的选择可能是创建一个新工作表,将所有 200 行所需的数据粘贴到那里,然后将整个工作表导出为 csv。然后清除或删除它并重新开始下一批。
-
您可以尝试启动 here 从工作表创建 csv。