2016-12-06 211 views
0

我用這個功能來導出數據範圍CSV:如何使用VBA導出CSV文件?

Sub Fct_Export_CSV() 
    Dim Value As String 
    Dim size As Integer 

    Value = ThisWorkbook.Path & "\Export_" & Sheets(1).range("B20").Value & ".csv" 
    chemincsv = Value 

    Worksheets("Database").Select 
    Dim Plage As Object, oL As Object, oC As Object, Tmp As String, Sep$ 
    Sep = ";" 
    size = Worksheets("Database").range("B" & Rows.Count).End(xlUp).Row 
    Set Plage = ActiveSheet.range("A1:G" & size) 

    Open chemincsv For Output As #1 
    For Each oL In Plage.Rows 
    Tmp = "" 
    For Each oC In oL.Cells 
     Tmp = Tmp & CStr(oC.Text) & Sep 
    Next 
    Print #1, Tmp 
    Next 
    Close 

    MsgBox "OK! Export to " & Value 
End Sub 

出口工作,但我有一個太「;」在每行的結尾處。

實例導出CSV:

文件夾;樹;集團;名字;姓氏; sAMAccountName賦;規則;
FOLDER; TREE; DL-FOLDER-R; John; TOTO; JTOT; R;

我在哪裏修改這個VBA腳本來生成沒有「;」的CSV文件?最後 ?
我的目標:

文件夾;樹;集團;名字;姓氏; sAMAccountName賦;規則
夾; TREE; DL-FOLDER-R;約翰; TOTO; JTOT; R

+0

爲您的代碼的一些技巧:點心chemincsv(如果尚未變暗全局);不要'選擇'工作表,只需使用'工作表(「數據庫」)'而不是'ActiveSheet'; ''把你所有的範圍都變成'範圍';不要命名一個變量'範圍'(我懷疑你做了某個地方,因爲它沒有在你的代碼中大寫) – arcadeprecinct

回答

3

有多種方法可以實現這一點。 例如。如果迭代是最後一個,則可以在Tmp = Tmp & CStr(oC.Text) & Sep中添加if條件以不追加sep。

另一種方法是使用左功能。在不修改大部分代碼的情況下,我認爲這將是一個好方法。 下面是一個示例代碼(havnt嘗試過):

最後打印語句之前的代碼
Sub Fct_Export_CSV() 
    Dim Value As String 
    Dim size As Integer 

    Value = ThisWorkbook.Path & "\Export_" & Sheets(1).range("B20").Value & ".csv" 
    chemincsv = Value 

    Worksheets("Database").Select 
    Dim Plage As Object, oL As Object, oC As Object, Tmp As String, Sep$ 
    Sep = ";" 
    size = Worksheets("Database").range("B" & Rows.Count).End(xlUp).Row 
    Set Plage = ActiveSheet.range("A1:G" & size) 

    Open chemincsv For Output As #1 
    For Each oL In Plage.Rows 
    Tmp = "" 
    For Each oC In oL.Cells 
     Tmp = Tmp & CStr(oC.Text) & Sep 
    Next 


'take one less than length of the string number of characters from left, that would eliminate the trailing semicolon 
    Tmp = left(Tmp, Len(Tmp)-1) 

    Print #1, Tmp 
    Next 
    Close 



    MsgBox "OK! Export to " & Value 
End Sub 

新增一條線,應該工作。我知道。

+0

嗨,請接受答案,如果它適合你:) –

0

如果你的機器上工作,有分號設置爲本地分離器可以節省紙張爲CSV並指定Local:=True

Worksheets("Database").SaveAs Filename:=Value, FileFormat:=xlCSV, Local:=True