如何在宏创建的.csv文件中指定列分隔符?

时间:2014-04-13 02:36:57

标签: excel vba excel-vba csv

我正在使用宏作为此问题的接受答案。 Saving excel worksheet to CSV files with filename+worksheet name using VB

然而,我已将Windows默认行分隔符从逗号编辑为分号

因此,如果我将单个工作表excel工作簿保存为.csv,则生成的txt是正确的,并根据需要使用分号。

但是,当我使用宏从多工作表excel工作簿自动生成单个.csv文件时,所有文件仅使用逗号描述生成。

我只能假设宏没有引用excel相同的系统变量,如果有人能指出我的解决方案,我真的很感激。或者,如果你不介意,只需从上面链接的问题发布宏观解决方案的编辑版本。

感谢您的时间。

编辑14_0412#1: 我偶然发现了这个:

Application.PathSeparator

并尝试在此处添加:

For Each WS In ThisWorkbook.Worksheets
     WS.SaveAs SaveToDirectory & WS.Name, xlCSV, "", "", False, False, False, Application.PathSeparator
Next

我还尝试放置一个简单的字符串“;”。

宏完成没有错误,但输出是相同的。

1 个答案:

答案 0 :(得分:0)

我很清楚地知道了。我无法声称这是应该如何完成的,我只能说它能够按照我的需要运作。

以上面链接的例子为例,这对我有用。

我将SaveAs扩展为在 Local 参数中包含对Application.PathSeparator的引用。 http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.saveas.aspx

Public Sub SaveWorksheetsAsCsv()

Dim WS As Excel.Worksheet
Dim SaveToDirectory As String

Dim CurrentWorkbook As String
Dim CurrentFormat As Long

 CurrentWorkbook = ThisWorkbook.FullName
 CurrentFormat = ThisWorkbook.FileFormat
' Store current details for the workbook
 Application.DisplayAlerts = False
      SaveToDirectory = "C:\"

      For Each WS In ThisWorkbook.Worksheets
          WS.SaveAs SaveToDirectory & WS.Name, xlCSV, "", "", False, False, False, False, False, Application.PathSeparator
      Next

' Application.DisplayAlerts = False
  ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
 Application.DisplayAlerts = True
' Temporarily turn alerts off to prevent the user being prompted
'  about overwriting the original file.

End Sub

如果有人可以提供更正确的版本,请执行! (我对VB语法一无所知)