我将数据复制到电子表格中,使用VBA格式化,然后将该表格保存为CSV文件。
我使用以下代码:
ws.SaveAs Filename:=filestr, Fileformat:=xlCSV
ws是我保存的工作表。
这为我提供了逗号分隔的CSV文件。
我想将该表保存为以分号分隔的文件。
我发现了以下内容:
我按照上面的步骤将代码更改为:
ws.SaveAs Filename:=filestr, Fileformat:=xlCSV, Local:=True
我仍然以逗号分隔的CSV文件作为输出。
我使用的是Excel 2003,我的操作系统是Windows XP。
答案 0 :(得分:16)
我刚检查过这个,因为有同样的问题。在这种情况下,文件名没有任何功能。
这对我有用:
With ActiveWorkbook
.SaveAs Filename:="My File.csv", FileFormat:=xlCSV, Local:=True
.Close False
End With
在区域设置中 - > ; < - 作为列表分隔符。关闭时保存更改也很重要 - >关闭时,您必须使用False
。
答案 1 :(得分:2)
无需声明所有这些变量,只需在SaveAs方法的末尾添加local:= true,如下所示:
ActiveWorkbook.SaveAs Filename:="C:/Path/TryMe.csv", FileFormat:=xlCSV, Local:=True
答案 2 :(得分:0)
只需使用此代码: ActiveWorkbook.SaveAs“My File.csv”,xlCSV,Local:= True
(不要使用:文件名:=)
答案 3 :(得分:0)
在构建成功之后使用vbs脚本:
.SaveAs Filename,6,0,0,0,0,0,0,0,0,0,1
其中参数是:
Object Filename,
Object FileFormat,
Object Password,
Object WriteResPassword,
Object ReadOnlyRecommended,
Object CreateBackup,
XlSaveAsAccessMode AccessMode,
Object ConflictResolution,
Object AddToMru,
Object TextCodepage,
Object TextVisualLayout,
Object Local
SourceLink:https://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.excel.workbook.saveas.aspx
“SaveAs”函数中的最后一个“1”等于Local = True
此外,分号必须在OS区域设置中定义为列表分隔符(参见上面的答案)
答案 4 :(得分:0)
使用xlCSV的xlSCVMSDOS读入
ActiveWorkbook.SaveAs Filename:="my File.csv", FileFormat:= xlCSVMSDOS, Local:=True
对我有用
答案 5 :(得分:0)
我遇到了同样的问题,并考虑尝试使用VBA代码和内核调用来更改“区域设置”中的“行分隔符”,因此我认为这会比较麻烦,因此,我只是找到了一些使用用Scripting.FileSystemObject代替我的需要。
以下代码将获取一个现有的csv文件,并将所有逗号替换为波浪号“〜”字符。
Private Sub commaReplace()
Dim objFSO
Dim filePath
Dim migratorFileName
Dim strFullPath1
Dim strFullPath2
Const ForReading = 1
'define a TextStream object
Dim objTS
Dim strContents As String
'note, my code actually uses the below commented out filepath
'as the location of the workbook can be arbitrary, e.g.
'Worksheets("FilePath").[A2:A2].Value is determined when workbook
'is opened
'filePath = Worksheets("FilePath").[A2:A2].Value
filePath = "C:\Temp\"
'our original file that we've exported as csv file in another section of code
migratorFileName = "MigratorInput.csv"
strFullPath1 = filePath + migratorFileName
'the path and file name we want to save to, tilde separated vs. comma
migratorFileName = "MigratorInput.tilde.csv"
strFullPath2 = filePath + migratorFileName
'read everything from the csv file, replacing comma with tilde
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(strFullPath1, ForReading)
strContents = objTS.ReadAll
strContents = Replace(strContents, ",", "~")
objTS.Close
'write everything out to another file, note, this could just overwrite
'the original file if you pass the optional overwrite flag
Set objTS = objFSO.CreateTextFile(strFullPath2)
objTS.Write strContents
objTS.Close
End Sub
然后您可以从正在创建csv文件的子例程中调用commaReplace子例程。
希望它对某人有帮助!