工作表CSV与自定义分隔符?

我需要使用工作簿中的自定义分隔符创build一个CSVstring。

我写了这个函数,但是问题在于循环行太慢了:

Public Function CSVStringFromWB(wb As Workbook, FieldTerminator As String) As String Dim Line As String Dim r As Long Dim ColsCount As Long Dim RowsCount As Long ColsCount = wb.Sheets(1).UsedRange.Columns.Count RowsCount = wb.Sheets(1).UsedRange.Rows.Count With wb.Sheets(1) For r = 1 To RowsCount Line = Join(Application.Transpose(Application.Transpose(.Range(.Cells(r, 1), .Cells(r, ColsCount)).Value)), FieldTerminator) CSVStringFromWB = CSVStringFromWB + Line + vbNewLine Next r End With End Function 

是否有更快的替代方法来创build一个范围自定义分隔符到CSVstring?

这大约快20倍(使用6k行×20列)

 Public Function FasterCSVStringFromWB(wb As Workbook, _ FieldSep As String) As String Dim data, lines() As String, line As String, sep As String Dim ColsCount As Long, r As Long, c As Long Dim RowsCount As Long data = wb.Sheets(1).UsedRange.Value ColsCount = UBound(data, 2) RowsCount = UBound(data, 1) ReDim lines(1 To RowsCount) For r = 1 To RowsCount sep = "" line = "" For c = 1 To ColsCount line = line & sep & data(r, c) If c = 1 Then sep = FieldSep Next c lines(r) = line Next r FasterCSVStringFromWB = Join(lines, vbNewLine) End Function 

通过单元格读取整个Excel表单很慢。 如果可以,将所需的excel rows / cols保存为一个单独的csv文件,然后编写一个单独的小程序,将csv中的逗号更改为其他内容。

如果你必须用vba来查看整个excel表格,那么你所做的可能是唯一的方法。

如果必须处理大量的Excel文件,请尝试复制所需的行/列,然后粘贴到新的工作表中,然后将工作表另存为csv,然后更改分隔符。