Excel跟踪CSV文件中的逗号错误

我有一个XLS文件在Excel 2003中创build一个带有macros的CSV文件,我有40 +列,最后3个是可选的,因此在XLS上有很多空的值,当我运行导出子程序,它不会把所有行上的尾随逗号,为什么? 因为: http : //support.microsoft.com/kb/77295 -.-

在Microsoft Office Excel中,如果以文本或CSV(逗号分隔值)格式保存文件,Excel将在工作表的每列之间放置制表符或逗号。 但是,某些文本文件可能以16行块的不同数量的制表符或逗号保存。

这里是他们build议的工作:

要确保Excel保存所有空列的制表符或逗号分隔符,请确保文件中的最后一列在整个文件中至less每隔16行包含一些数据。 如果行块不包含数据,则将每16行中的空格或其他字符添加到最后一列中的单元格,或者重新排列工作表中的列,以便工作表上的最后一列始终包含信息。

– 。 – 方式去微软! -.-

好了,所以我的主要问题是,生成的文件将被另一个程序parsing出我的范围,这需要特定的格式,因为它现在我每隔16行添加一个空白,如果该字段为空,这似乎这样做但数据处理部门正在抱怨这个空白…你能相信他们吗?

无论如何,我也试图添加一个标志,并删除它与查找function,但ofc当你保存文件它将带走分隔符…

感谢您阅读我的历史; p

有什么build议么 ?

编辑:不幸的是,使用Excel是必须的,数据是由不同的用户通过Excel表格手动input,VBA代码更像模板生成等。这是我唯一的问题,这是不可行的改变整个过程。

手动示例;

Dim r As Range: Set r = Range("A1:C10") '// or ActiveSheet.UsedRange for everything Dim buffer As String, delimiter As String, c As Range Dim i As Long For Each c In r If (i Mod r.Columns.Count) = 0 Then If (Len(buffer)) Then delimiter = vbCrLf Else delimiter = "," End If buffer = buffer & delimiter & """" & CStr(c.Value) & """" '//or c.text to preserve formatting i = (i + 1) Next Open "c:\xxx.csv" For Output As #1 Print #1, buffer Close #1 

build议1)停止使用Excel生成CSV文件。

你的数据来源是什么? Excel从哪里获取数据? 也许你可以用原始数据源做一些事情来生成一个CSV文件,而不是使用Excel作为中间人。 如果你喜欢真正的大锤,Biztalk是数据input/输出操作的终极MS工具。 很less有人可以从他们的工具箱中取出一个,但是将一个定制的c#程序放在一起生成一个CSV文件可以在几个小时内完成。

总之:如果可能,请使用更好的工具!

如果你的数据中没有逗号,那么编写一个文本阅读器会很容易,并且计算一行中的列数,如果没有足够多的话,只需要添加逗号。 这不是理想的,但它可能比写一个自定义的Excel到CSV转换器更容易。

最简单的方法:

 ActiveWorkbook.SaveAs "MyFileNameAndDir.csv", xlCSV, Local:=True