簡體   English   中英

將逗號分隔的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)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM