我目前正在使用此功能进行保存,但我遇到了问题:
Private Sub spara()
ActiveWorkbook.SaveAs Filename:="T:\filepath+ ActiveWorkbook.Name", _
FileFormat:=xlCSV, CreateBackup:=False
End Sub
它会自动保存,
,但我需要将其与;
一起保存在其文件中。有可能改变它以某种方式节省的方式吗?
我已经尝试使用谷歌搜索此问题,但所有关于.csv文件保存的宏只是如何保存.csv以及如何将多个表格拆分为.csv。
答案 0 :(得分:12)
您的Excel使用哪种语言?如果您的母语使用“;”默认情况下,您可以传递参数“local:= True”
ActiveWorkbook.SaveAs Filename:="C:\Temp\Fredi.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True
如果没有,你唯一的选择是事后搜索和替换......
答案 1 :(得分:2)
更改Excel选项(高级,编辑选项)将十进制分隔符设置为,
(显然(!))
答案 2 :(得分:1)
很有可能这个问题不能仅使用Excel VBA解决。问题是,虽然Excel Save As...
使用机器区域设置定义列表分隔符值,但Excel VBA始终使用en-US区域设置,因此,它始终使用,
作为列表分隔符。
我建议保存CSV,然后使用自定义控制台应用/脚本进行后期处理。有很多CSV解析器可以读取,-csv
,然后将其保存为;-csv
。
答案 3 :(得分:1)
我在关闭工作簿
时解决了添加“SaveChanges:= False”的问题With ActiveWorkbook
.SaveAs Filename:="T:\filepath+ ActiveWorkbook.Name", FileFormat:=xlCSV, Local:=True
.Close SaveChanges:=False
End With
答案 4 :(得分:0)
我一直在寻找这个以帮助解决我遇到的类似问题, 我有一个excel表,我导出到一个csv文件,然后在其他地方卸载但需要使用分号而不是逗号分隔字符,这在我手动导出文件时工作正常,因为我已经更改了以下内容 控制面板>地区和语言>>附加设置>>列表分隔符 从逗号到分号。 但当我试图通过VBA自动化时,它默认为逗号, 为了解决这个问题,我添加了Christian Sauer建议的本地参数,然后我就改变了我的区域设置。
ActiveWorkbook.SaveAs Filename:="Filename.txt", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
感谢Christian的指针。
答案 5 :(得分:0)
对于遇到此代码问题的人
dim wa as Workbook
Workbooks.OpenText FileName:=path2file, _
DataType:=xlDelimited, Semicolon:=True, Local:=True
set wa = ActiveWorkbook
wa.SaveAs FileName:=path2file, FileFormat:=xlCSV, _ ConflictResolution:=xlLocalSessionChanges, Local:=True
wa.Close False
第二行非常重要,如果wa.Close False
不存在,则会要求批准保存,或者如果wa.Close True
它将替换&#34 ;;" for","。
进入当地环境并制作";"列表分隔符,VBA仍然与","分开。修改了上面的代码并完成了。
希望这能为某些人提供一些启示
答案 6 :(得分:0)
这里的答案很好,但它们对我不起作用,因为我正在尝试创建一个工具,该工具适用于他们自己计算机上的任何用户,而且我不想设置这些语言环境在每个人的电脑上。我什至尝试使用 FileSystemObject 滚动我自己的 CSV 导出器,但目标路径名在 SharePoint 上,因此也失败了。
然后我偶然发现了一个非常简单的解决方法:创建一个新的工作表,将您的所有信息连接到一个列中,用分号分隔,例如:
CONCAT('Old WS'!A1,";",'Old WS'!B1,";",'Old WS'!C1,";",'Old WS'!D1,";",'Old WS'!E1)
然后添加一些这样的代码来导出它:
Call Worksheets("Export WS").Copy
ActiveWorkbook.SaveAs Filename:=CSVname, FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.Close
因为全部在一列中,Excel 不会添加自己的分隔符!