我有一个excel文件,需要使用Excel VBA转换为CSV。
所以我得到了以下代码:
Sub REPORT()
Dim ColNum As Integer
Dim Line As String
Dim LineValues() As Variant
Dim OutputFileNum As Integer
Dim PathName As String
Dim rowNum As Integer
'Create CSV file
PathName = Application.ActiveWorkbook.Path OutputFileNum = FreeFile
Open PathName & "\" & "Myfile" & ".csv" For Output Lock Write As #OutputFileNum
SheetValues = ActiveSheet.UsedRange
Range("A1").CurrentRegion.Select
With ActiveSheet.UsedRange
numbercolumns = .Columns.Count
End With
ReDim LineValues(1 To numbercolumns)
For rowNum = 1 To last
For ColNum = 1 To numbercolumns
LineValues(ColNum) = SheetValues(rowNum, ColNum)
Next
Line = Join(LineValues, ",")
Print #OutputFileNum, Line
Next
Close OutputFileNum
End Sub
我的问题是Excel文件的任何单元格中都有逗号。当发生这种情况时,宏将单元格分成两部分,并将一部分移动到下一列重写数据。
非常感谢
答案 0 :(得分:0)
首先也许最简单的方法是在加入之前删除所有逗号:
For rowNum = 1 To last
For ColNum = 1 To numbercolumns
LineValues(ColNum) = Replace(SheetValues(rowNum, ColNum), ",", "")
Next
Line = Join(LineValues, ",")
Print #OutputFileNum, Line
Next
另一种选择可能是用“;”分隔csv文件或所使用数据中未包含的任何其他字符。
最后你可以用其他东西替换逗号(例如“#”或其他不太常用的字符),并在读取文件时恢复它,假设当然以某种你可以控制的方式读取文件。
答案 1 :(得分:0)
您是否看过原生功能?
ActiveSheet.SaveAs Filename:=PathName & "\" & "Myfile" & ".csv", FileFormat:=xlCSV, CreateBackup:=False
它正确地转义包含双引号逗号的单元格
答案 2 :(得分:0)
最简单的方法是将您附加的内容括在引号中 - 您可以使用Char(34)。