使用逗号将Excel文件转换为CSV VBA

问题描述:

我有一个需要使用Excel VBA转换为CSV的excel文件。使用逗号将Excel文件转换为CSV VBA

所以对于我得到了下面的代码:

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文件中的任意单元格逗号。发生这种情况时,宏将单元格分成两部分,并将一部分移动到下一列以覆盖数据。

非常感谢

第一,可能比较容易apporach将加入前删除所有逗号:

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

+0

非常感谢。我喜欢你的想法 – fmmoraleda 2015-02-09 14:43:39

+0

但为什么在单元格中有逗号?如果这是小数点分隔符,那么CSV应该使用“;”而不是“,”之间的值。如果逗号在字符串中,则值应该放在双引号之间。无需更改实际内容 – galinette 2015-02-10 08:48:33

+0

嗨,如果用“#”替换“,”我怎么能在创建csv时恢复它? – fmmoraleda 2015-03-05 09:39:47

你看过本机功能吗?

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

它适当地含有逸出逗号用双引号

最简单的方法是将附上您在引号追加内容细胞 - 你可以使用CHAR(34)。