2015-02-09 119 views
0

我有一個需要使用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文件中的任意單元格逗號。發生這種情況時,宏將單元格分成兩部分,並將一部分移動到下一列以覆蓋數據。

非常感謝

回答

0

第一,可能比較容易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

0

你看過本機功能嗎?

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

它適當地含有逸出逗號用雙引號

0

最簡單的方法是將附上您在引號追加內容細胞 - 你可以使用CHAR(34)。

相關問題