Всем доброго времени суток! Помогите, пожалуйста, с решением следующего вопроса:
1. Есть .csv файл со статистикой продаж (в нем больше миллиона записей, т.е. в эксель он весь не залезет), в первой строчке находятся заголовки столбцов, делиметер - ; Что нужно сделать: Нужно обработать эту статистику макросом, не загружая ее в эксель изначально. Загрузить уже нужно будет промежуточный результат (например, сумму продаж по юнитам за все дни) расчета, который будет сильно меньше по размеру. Приоритеты: Минимизация шагов при обработке данных. Скорость выполнения обработки.
Заголовки для примера: Юнит, день, продажи - SKU, day, sales.
Сам пытался реализовать вот такой макрос - он работает, но при условии, что я предварительно руками перегоняю текстовый файлик .csv в формат .xlsx, теряя часть данных, и разбиваю текст по столбцам в нем:
Код
Sub SQL_test()
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.Calculation = xlManual
End With
Dim sSQLQry As String
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String, sconnect As String
DBPath = "C:\blahblahblah\File.xlsx"
sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"
Conn.Open sconnect
sSQLQry = "Select SKU, sum(Sales) FROM [HT$] group by SKU" - т.е., например, суммируем продажи по юнитам за все дни.
mrs.Open sSQLQry, Conn
Range("FT!A2:ZZ100000" .ClearContents
Range("FT!A2" .CopyFromRecordset mrs
mrs.Close
Set mrs = Nothing
Conn.Close
Set Conn = Nothing
With Application
.Calculation = xlAutomatic
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub