【发布时间】:2016-02-25 19:45:24
【问题描述】:
我在 Excel-VBA 中制作了一个宏:
- 创建一个新工作表
- 将数据写入 5 列
- 将文件另存为 CSV
- 关闭文件
问题是,一旦文件关闭,数据就不再按列分隔。但它是以逗号分隔并连接成一列。
奇怪的是,手动关闭最近创建的 csv 文件(而不是在 VBA 中关闭)解决了这个问题,因为再次打开时数据仍然在列中。。
我在这里要做的是在 VBA 中保存/关闭文件,并将数据保存在列中。
这是一个例子:
Sub test()
Workbooks.Add
Cells(1, 1) = "a"
Cells(1, 2) = "a"
Cells(1, 3) = "a"
ActiveWorkbook.SaveAs filename:= "C:\Users\user\Desktop\File.csv", FileFormat:=xlCSV
End Sub
然后手动关闭“File.csv”并再次打开它:
第二个例子:
Sub test()
Workbooks.Add
Cells(1, 1) = "a"
Cells(1, 2) = "a"
Cells(1, 3) = "a"
ActiveWorkbook.SaveAs filename:= "C:\Users\user\Desktop\File.csv", FileFormat:=xlCSV
ActiveWorkbook.Close
End Sub
文件在此处自动关闭。这是手动打开时的结果:
【问题讨论】:
-
在第二个示例中将
ActiveWorkbook.Close SaveChanges:=True添加到End Sub之前。我对此进行了测试,效果很好。 -
没想到,我想你可以设置分隔符。不要使用逗号,而是使用 TAB。检查:superuser.com/questions/476327/…
-
@Santosh 没有帮助,输出与示例 2 相同。
-
@Eric 我电脑的分隔符设置为“;”不是“,”,我仍然得到一个逗号。