将工作表导出为CSV

我想导出一个工作表作为CSV存储,这样我们可以返回并重新检查数据集。 我已经输出了列A中的整个工作表的代码,我想工作表输出,因为它在工作表中。 谁能帮我?

值得注意的是,表的宽度和长度都是可变的,因此柜台。

Sub DataSets() Dim shRefData As Worksheet, shInput As Worksheet Set shRefData = ThisWorkbook.Sheets("ReferenceData") Dim w, x, y, z As Integer Dim filepath As String filepath = ThisWorkbook.Path + "\" w = 3 z = 1 x = 1 Open ThisWorkbook.Path + "\" + "Dataset" & Format(Now, "DDMMYY") & ".csv" For Output As #1 Do While shRefData.Cells(w, 1) <> "" w = w + 1 Loop Do While shRefData.Cells(3, z) <> "" z = z + 1 Loop For x = 1 To w For y = 1 To z Print #1, Cells(x, y) y = y + 1 Next x = x + 1 Next Close #1 End Sub 

自从我用直接输出写入文件已经很长时间了,但我相信错误在这里:

 For x = 1 To w For y = 1 To z 'this line is the issue: Print #1, Cells(x, y) y = y + 1 Next x = x + 1 Next 

我相信,当您Print #1时, Print #1会自动放入一个CRLF (回车, CRLF行)。 所以一切都以一列结束。 要解决你现有的代码,我会试试这个:

 Dim out as string For x = 1 To w out = "" For y = 1 To z 'this builds a string of "value, value, value" out = out & Cells(x,y) & ", " y = y + 1 Next Print #1, out x = x + 1 Next 

但是,我相信做这样的事情会更容易 – 注意,代码不在我头顶,没有完全debugging

 Sub DataSets() Dim shRefData As Worksheet Dim NewBook as Workbook DiM NewName as String Set shRefData = ThisWorkbook.Sheets("ReferenceData") NewName = ThisWorkbook.Path & "\" + "Dataset" & Format(Now, "DDMMYY") & ".csv" set NewBook = workbooks.add shRefData.copy Before:=NewBook.sheets(1) 'Application.DisplayAlerts = False NewBook.SaveAs FileName:=NewName, FileFormat:=xlCSV 'Application.DisplayAlerts = True NewBook.close set NewBook = Nothing End Sub 

这应该将NewBook的单页保存为.CSV文件。 它会自动删除NewBook中的所有额外的工作表,因为.CSV不支持多个工作表(这就是为什么您必须将其复制到新工作簿的Sheet1 Before:=

一旦确认所有事情都按预期工作,取消注释两个Application.DisplayAlerts行以禁用Excel想要popup的关于丢失额外表单的警告。