我有一个excel工作簿,我想保存为csv文件。 这是我使用的代码:
Application.DisplayAlerts = True
ActiveWorkbook.SaveAs FileName:= _
"C:\Users\Geoffrey\Dropbox\DCS PROGRAM\FILES\1. QUOTES\3. PROGRAM FILES\DOOR QT REQUESTS\DOORS_COMBINED.csv", FileFormat:=xlCSV _
, CreateBackup:=False
Workbooks.Open ("C:\Users\Geoffrey\Dropbox\DCS PROGRAM\FILES\1. QUOTES\3. PROGRAM FILES\DOOR QT REQUESTS\DOOR PROGRAM.xlsm")
Workbooks("DOORS_COMBINED.csv").Close
问题是当我保存它时它与excel工作簿看起来不一样。
Excel文件:
A B C D
Item 1 Item 2 Item3 Item 4
Item 1 Item 2 Item3 Item 4
Item 1 Item 2 Item3 Item 4
.CSV文件:(所有内容都合并到A列中)
A B C D
Item 1Item 2Item3Item 4
Item 1Item 2Item3Item 4
Item 1Item 2Item3Item 4
如果我手动将其保存为.csv,则结果是正确的。
我认为这可能是问题所在。我设置excel读取分隔符为;因为我的描述包含逗号。
将VBA用于SaveAs时的记事本视图:
手动保存时的记事本视图:
答案 0 :(得分:1)
我认为解决方案已被多次提及,但要明确。
这对我有用:
ActiveWorkbook.SaveAs Filename:="C:\Temp\test_out.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True
诀窍是local:=True
并确保您的区域设置List separator
是分号。
要设置List separator
,请打开Control Panel => Region and Language
,点击Additional settings
并将List separator:
更改为;
答案 1 :(得分:0)
您可以尝试这种格式
FileFormat:=xlCSVMSDOS
并尝试在 CreateBackup:= False 此行后添加
, Local:=True