如何使用VBA导出CSV文件?

问题描述:

我用这个功能来导出数据范围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

有多种方法可以实现这一点。 例如。如果迭代是最后一个,则可以在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

嗨,请接受答案,如果它适合你:) –

如果你的机器上工作,有分号设置为本地分离器可以节省纸张为CSV并指定Local:=True

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