我正在使用宏作为此问题的接受答案。 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
我还尝试放置一个简单的字符串“;”。
宏完成没有错误,但输出是相同的。
答案 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语法一无所知)