如何使用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
答
有多种方法可以实现这一点。 例如。如果迭代是最后一个,则可以在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
为您的代码的一些技巧:点心chemincsv(如果尚未变暗全局);不要'选择'工作表,只需使用'工作表(“数据库”)'而不是'ActiveSheet'; ''把你所有的范围都变成'范围';不要命名一个变量'范围'(我怀疑你做了某个地方,因为它没有在你的代码中大写) – arcadeprecinct