我使用这个函数导出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:
Folder;Tree;Group;FirstName;LastName;sAMAccountName;Rules; 文件夹;树;DL-文件夹-R;John;TOTO;JTOT;R;
我在哪里修改这个VBA脚本以生成没有";“结尾的CSV?
我的目标是:
Folder;Tree;Group;FirstName;LastName;sAMAccountName;Rules 文件夹;树;DL-文件夹-R;John;TOTO;JTOT;R
发布于 2016-12-06 09:37:54
要做到这一点,有多种方法。就像。如果迭代是最后一次迭代,您可以在Tmp = Tmp & CStr(oC.Text) & Sep中添加一个if条件,而不是附加sep。
另一种方法是使用左函数。在不修改大部分代码的情况下,我认为这是一个很好的方法。下面是一个示例代码(没有尝试过):
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在最后一次打印语句之前添加了一行代码,应该可以工作。让我知道。
发布于 2016-12-06 10:07:45
如果在将分号设置为本地分隔符的机器上工作,则可以将工作表保存为csv并指定Local:=True。
Worksheets("Database").SaveAs Filename:=Value, FileFormat:=xlCSV, Local:=Truehttps://stackoverflow.com/questions/40991661
复制相似问题