将带有逗号的Excel文件转换为CSV VBA

时间:2015-02-09 13:03:44

标签: excel vba csv

我有一个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文件的任何单元格中都有逗号。当发生这种情况时,宏将单元格分成两部分,并将一部分移动到下一列重写数据。

非常感谢

3 个答案:

答案 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)。