Excel将额外逗号导出为CSV

时间:2015-02-09 15:02:44

标签: excel vba excel-vba csv

我有一个通过Excel 2010运行的大型宏程序,在将大量数据格式化为另一个表并将工作簿导出为CSV文件之后(通过大量数据我意味着数千行,最多超过59,000行) 。最近,我的文件最后开始以最后一行逗号结尾,如下所示:

data,data,data,data,number,date
data,data,data,data,number,date
,,,,,

我使用存储过程将这些文件导出到SQL数据库,因此确保没有额外的逗号可以使用该程序。那么,话虽如此,发生了什么,我该如何预防呢?我可以提供您认为遗失的任何代码或信息。

注意:它似乎只发生在至少有数千行数据的文件上。导出的一个文件通常有2,000+,另一个要导出的表必须有59,000+。

EDIT1:这是我正在使用的宏,以防它有用(Ditto请求)

Sub exportTable()
Dim varIsOpen As Boolean
Dim varSaveLocation1 As String, varSaveLocation2 As String
varIsOpen = False

If ThisWorkbook.Sheets("ControlSheet").Range("D2").value = "" Then
    varSaveLocation1 = ThisWorkbook.Path & "\CSVREVIEW\"
    varSaveLocation2 = varSaveLocation1 & Year(Now) & Month(Now) & Day(Now) & Hour(Now) & Minute(Now)
Else
    varSaveLocation1 = ThisWorkbook.Sheets("ControlSheet").Range("D2").value
    If Right(varSaveLocation1, 1) <> "\" Then varSaveLocation1 = varSaveLocation1 & "\"
    varSaveLocation2 = varSaveLocation1 & Year(Now) & Month(Now) & Day(Now) & Hour(Now) & Minute(Now)
End If
    For counter = 1 To Workbooks.Count
        If Workbooks(counter).Name = "TableBook.xls" Then varIsOpen = True

        If varIsOpen = True Then Exit For
    Next

    If varIsOpen = False Then GoTo isClosed

Workbooks("TableBook").Activate

Application.DisplayAlerts = False

'Check if TableBook is empty and don't export if so
If Workbooks("TableBook").Sheets("logFile").Range("A1").value = "" Then
    Workbooks("TableBook").Close
    GoTo isClosed
End If

'On Error Resume Next
If Len(Dir(varSaveLocation1, vbDirectory)) = 0 Then
   MkDir varSaveLocation1
End If
If Len(Dir(varSaveLocation2, vbDirectory)) = 0 Then
    MkDir varSaveLocation2
End If
'On Error GoTo 0

ActiveWorkbook.Sheets("test").Activate
ActiveWorkbook.SaveAs varSaveLocation2 + "\test", xlCSV

ActiveWorkbook.Sheets("part").Activate
ActiveWorkbook.SaveAs varSaveLocation2 + "\part", xlCSV

ActiveWorkbook.Sheets("logFile").Activate
ActiveWorkbook.SaveAs varSaveLocation2 + "\logFile", xlCSV

ActiveWorkbook.Sheets("deltaLimits").Activate
ActiveWorkbook.SaveAs varSaveLocation2 + "\deltaLimits", xlCSV

ActiveWorkbook.Close

Application.DisplayAlerts = True

isClosed:
End Sub

3 个答案:

答案 0 :(得分:2)

点击 Ctrl + 结束,查看Excel认为数据范围的内容。如果超出了要导出的范围,请使用主页►编辑►清除►全部清除以从下面的行和所需数据区域右侧的列中擦除所有值和格式并保存工作簿。 Excel 2010(包含所有SP)将调整为CurrentRegion, Ctrl + End 现在应该转到正确的最后一个单元格

早期版本的Excel(或没有所有SP的XL2010)可能需要额外的步骤(请参阅Unwanted extra blank pages in Excel)。

答案 1 :(得分:0)

我遇到了一个看起来相同的问题(csv中的逗号),结果发现我在循环中又多了一行,而我使用的单元格是空的,因此我只有逗号

答案 2 :(得分:0)

我遇到了完全相同的问题。如果整个工作表都被格式化,即使只是文本类型或文本高度,Excel 甚至会将空单元格检测为数据。您可以删除整个格式化的列/行,如上所述 Cœur。或者只是创建一个新工作表而不设置任何格式并复制您的代码或更改地址。