在我通过C#调用Workbook.Save()之后,在MS Excel中打开一个分号分隔的文件。此外,分号将替换为逗号
我在MS Excel 2013中开发C#Addin时有一种奇怪的行为。 我的客户打开带有分号分隔符的CSV文件 现在,他可以单击我的一个加载项按钮。其中一个按钮将调用“Application.ActiveWorkbook.Save()”以保存对文件的更改 调用后,MS Excel将用逗号替换所有分号! 如果在Excel API中找不到解决此错误的解决方案 当我通过MS Excels blue disc保存文件时,不会进行替换 为什么? 有人能帮我吗 提前谢谢 --在我通过C#调用Workbook.Save()之后,在MS Excel中打开一个分号分隔的文件。此外,分号将替换为逗号,excel,csv,office-interop,excel-addins,Excel,Csv,Office Interop,Excel Addins,我在MS Excel 2013中开发C#Addin时有一种奇怪的行为。 我的客户打开带有分号分隔符的CSV文件 现在,他可以单击我的一个加载项按钮。其中一个按钮将调用“Application.ActiveWorkbook.Save()”以保存对文件的更改 调用后,MS Excel将用逗号替换所有分号! 如果在Excel API中找不到解决此错误的解决方案 当我通过MS Excels blue disc保存文件时,不会进行替换 为什么? 有人能帮我吗 提前谢谢 -- Markus如果CSV文件的标
Markus如果CSV文件的标准格式是分号,您可以尝试
ActiveWorkbook.SaveAs Filename:="text.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True
local:=True将使用您环境中正常使用的delimeter
如果不起作用,可以尝试直接使用vba创建csv文件
根据您的需要调整以下代码(位于)
非常感谢。但在代码中创建CSV文件不是一个选项。用户打开一个现有文件,更改它,然后单击我们的加载项按钮。如果用户打开了XLSX文件,那么使用Excel工作簿.save()命令保存更改也没有问题。..@Sukram但是如果用户单击按钮,则仅调用“Application.ActiveWorkbook.save()”或使用我的较长代码保存打开的CSV之间没有区别。只需将“SaveAs”中的虚拟名称替换为ActiveWorkbook.name&“.csv”,当然这是一个解决方案。但是没有其他办法解决这个问题吗?为什么原生Excel API工作簿.Save()替换分号?我认为这是因为原生Excel(VBA部分)是为“英语”环境设计的,并且在CSV(逗号分隔值)文件中使用逗号。如果要在vba中输入公式,还必须使用逗号而不是分号。是否可以更改vba语言?
Sub CreateCSV()
Dim rCell As Range
Dim rRow As Range
Dim sOutput As String
Dim sFname As String, lFnum As Long
'Open a text file to write
sFname = "C:\MyCsv.csv"
lFnum = FreeFile
Open sFname For Output As lFnum
'Loop through the rows'
For Each rRow In ActiveSheet.UsedRange.Rows
'Loop through the cells in the rows'
For Each rCell In rRow.Cells
sOutput = sOutput & rCell.Value & ";"
Next rCell
'remove the last comma'
sOutput = Left(sOutput, Len(sOutput) - 1)
'write to the file and reinitialize the variables'
Print #lFnum, sOutput
sOutput = ""
Next rRow
'Close the file'
Close lFnum
End Sub