Excel 将工作表导出到CSV
我想导出一个工作表,将其存储为CSV,以便我们可以返回并重新检查数据集。我已经在A列中输出了整个工作表的代码,我希望工作表能够像在工作表中一样输出。有人能帮我吗 值得注意的是,表的宽度和长度都是可变的,因此计数器是可变的Excel 将工作表导出到CSV,excel,csv,export,export-to-csv,vba,Excel,Csv,Export,Export To Csv,Vba,我想导出一个工作表,将其存储为CSV,以便我们可以返回并重新检查数据集。我已经在A列中输出了整个工作表的代码,我希望工作表能够像在工作表中一样输出。有人能帮我吗 值得注意的是,表的宽度和长度都是可变的,因此计数器是可变的 Sub DataSets() Dim shRefData As Worksheet, shInput As Worksheet Set shRefData = ThisWorkbook.Sheets("ReferenceData") Dim w, x, y, z As Int
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
子数据集()
Dim shRefData作为工作表,shInput作为工作表
Set-shRefData=ThisWorkbook.Sheets(“ReferenceData”)
尺寸w、x、y、z为整数
将文件路径设置为字符串
文件路径=此工作簿。路径+“\”
w=3
z=1
x=1
打开此工作簿。路径+“\”+“数据集”和格式(现在是“DDMMYY”)和“.csv”,输出为#1
当shRefData.CELL(w,1)时执行此操作“
w=w+1
环
执行shRefData.CELL(3,z)”时
z=z+1
环
对于x=1到w
对于y=1到z
打印#1,单元格(x,y)
y=y+1
下一个
x=x+1
下一个
关闭#1
端接头
我已经很久没有使用直接输出写入文件了,但我相信错误就在这里:
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
我相信,当您打印#1
时,它会在打印后自动放置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
然而,我相信做这样的事情会容易得多。注意,我头脑中没有完全调试过的代码:
这样就可以将NewBook
中的单个工作表保存为.CSV文件。由于.CSV不支持多张工作表,它将自动删除NewBook
中的所有额外工作表(这就是为什么您必须在新工作簿的Sheet1之前复制它的原因)
确认一切正常后,取消对两个应用程序的注释。显示警报
行,以禁用Excel希望弹出的关于丢失额外工作表等的任何警告。您是否遇到特定错误?如果是,是什么错误,发生在哪一行?是否有理由手动写入文本文件而不是useFile.SaveAs…FileFormat:=xlCSV
?在您的Open
行中,您同时使用+
和&
进行连接-只有&
在VBA字符串中工作。没有特定错误,但它将所有内容输出到A列,而不是维护当前为17列和47行的表结构。只有因为这就是我知道怎么做的。
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