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

Convert Excel file with commas to CSV VBA

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

非常感谢

第一个也是最简单的方法是在加入之前删除所有逗号:

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 文件或所用数据中未包含的任何其他字符。
最终你可以用其他东西替换逗号(例如“#”或其他不太可能使用的字符)并在读取文件时恢复它,当然假设文件是​​以你可以控制的某种方式读取的。

你看原生函数了吗?

ActiveSheet.SaveAs Filename:=PathName & "\" & "Myfile" & ".csv", FileFormat:=xlCSV, CreateBackup:=False

它正确地用双引号转义包含逗号的单元格

最简单的方法是将要附加的内容括在引号中 - 您可以使用 Char(34)。