2015-02-09 3 views
1

У меня есть большая макро программа, запускаемая через 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 
+1

Скорее всего, у вас есть пустая ячейка или что-то «используемое» после последней строки данных. Я могу дублировать это в небольшой таблице с несколькими строками данных, затем курсор вниз на две строки и нажать « + » (т. Е. Пустая ячейка). затем экспортируйте csv - viola, extra comas. Возможно, что-то еще, вы, вероятно, захотите начать с того, что все, что находится ниже ваших данных, будет удалено. (т. е. удалять строки или что-то еще). – Ditto

+0

Я снова запустил программу и посмотрю, так ли это. У меня должно быть обновление примерно через 10 минут. Спасибо за предложение, @Ditto – jaysoncopes

+0

@Ditto Я остановил программу в том месте, где была бы возможность испытать то, что вы описываете, но если бы была ваша «пустая ячейка» по вашим стандартам, я был бы в состоянии пойти до строки формулы и выделите пространство в этой ячейке. В последней строке той, которую я экспортирую, нет места. Я попробую очистить эту последнюю строку перед экспортом, хотя я не уверен, насколько это поможет. – jaysoncopes

ответ

1

Нажмите Ctrl + End, чтобы увидеть, что считает Excel являются экстентов ваши данные. Если он находится за пределами того, что вы хотите экспортировать, используйте «Домой» ► «Редактирование» ► «Очистить» ► «Очистить все», чтобы стереть все значения и форматировать из строк ниже и столбцов справа от нужной области данных и сохранить книгу. Excel 2010 (со всеми SP) настроится на CurrentRegion и Ctrl + Конец должен теперь привести вас к правильной последней ячейке.

Более ранние версии Excel (или XL2010 без всех SP) могут потребовать дополнительных шагов (см. Unwanted extra blank pages in Excel).

+0

Для справок в будущем: код VBA для этого был выполнен с помощью команды '.Clear' в' .EntireRow' одной строки после «Range (« A1 »). End (xlDown)'. – jaysoncopes

Смежные вопросы