vba - Excel 将多余的逗号导出到 CSV

标签 vba excel 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

最佳答案

点按 Ctrl+End 查看 Excel 认为的数据范围。如果超出了您想要导出的范围,请使用“主页”►“编辑”►“清除”►“全部清除”来删除所需数据区域下面的行和右侧的列中的所有值和格式,然后保存工作簿。 Excel 2010(包含所有 SP)将调整到当前区域,Ctrl+End 现在应该会将您带到正确的最后一个单元格

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

关于vba - Excel 将多余的逗号导出到 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28412752/

相关文章:

excel - 将哈希表导出为 CSV,并将键作为列标题

vba - ppActionRunMacro 的 If 语句

c# - 在c#中处理大量excel工作簿时如何跳过一些受密码保护的excel文件

r - 使用R在Excel工作表中创建图表

javascript - Papaparse/文件不起作用 - 输出乱码

python - 如何使用 Python 从 url 打开 .csv 文件?

vba - 如何将 VBA Debug.Print 输出记录到文本文件?

sql - 通过 VBA/SQL 从 Excel 应用程序更新 Microsoft Access 表字段

excel - 如何在Excel工作表中每两行添加边框

python - 如何使用 xlrd 包处理 xlsx 文件读取错误 ("assert tvalue is not None")?