代码无法正确保存.csv文件

时间:2015-11-14 20:12:01

标签: excel vba excel-vba csv

我有一个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读取分隔符为;因为我的描述包含逗号。

File opened in notebook

enter image description here

将VBA用于SaveAs时的记事本视图:

手动保存时的记事本视图:

2 个答案:

答案 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