У меня есть большая макро программа, запускаемая через Excel 2010, которая после форматирования больших объемов данных в другую таблицу и экспорта рабочей книги в виде файла CSV (большими объемами данных я имею в виду тысячи строк, до более чем 59 000 строк). В последнее время мои файлы начали заканчиваясь с дополнительной строкой запятых в конце, как так:Excel Экспорт дополнительных запятых в CSV
data,data,data,data,number,date
data,data,data,data,number,date
,,,,,
Я экспортировать эти файлы в базу данных SQL с помощью хранимой процедуры, поэтому гарантируя, что нет никаких дополнительных запятых винт с программой имеет важное значение. Итак, с учетом сказанного, что происходит и как я могу это предотвратить? Я могу предоставить любой код или информацию, которые, по вашему мнению, отсутствуют.
ПРИМЕЧАНИЕ. Кажется, что это происходит только в файлах с несколькими тысячами строк по меньшей мере данных. Один экспортированный файл часто имеет 2000+, а другой должен иметь 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
Скорее всего, у вас есть пустая ячейка или что-то «используемое» после последней строки данных. Я могу дублировать это в небольшой таблице с несколькими строками данных, затем курсор вниз на две строки и нажать « + » (т. Е. Пустая ячейка). затем экспортируйте csv - viola, extra comas. Возможно, что-то еще, вы, вероятно, захотите начать с того, что все, что находится ниже ваших данных, будет удалено. (т. е. удалять строки или что-то еще). –
Ditto
Я снова запустил программу и посмотрю, так ли это. У меня должно быть обновление примерно через 10 минут. Спасибо за предложение, @Ditto – jaysoncopes
@Ditto Я остановил программу в том месте, где была бы возможность испытать то, что вы описываете, но если бы была ваша «пустая ячейка» по вашим стандартам, я был бы в состоянии пойти до строки формулы и выделите пространство в этой ячейке. В последней строке той, которую я экспортирую, нет места. Я попробую очистить эту последнюю строку перед экспортом, хотя я не уверен, насколько это поможет. – jaysoncopes