Страницы: 1
RSS
Сборка данных из CSV файлов. Нехватка оперативки.
 
Добрый день,
Есть код, который из собирает в текущий .xlsm файл данные из .csv файлов (все файлы лежат в одной папке).
По сути берет первую строку из .csv файла и копирует её в конец .xlsm.

Однако когда .csv файлов >200 тыс., то чувствуется, что оперативка начинает утекать...Не пойму на каком моменте идет утечка, сами ж файлы закрываю вроде, переменные обнуляю.
Может кто ткнуть носом в место, где собака зарыта?
Код
Option Explicit
 
Sub xlsm_csv()
    Dim a_path As String
    Dim csvF As String
    Dim shb As Worksheet
    Dim sh As Worksheet
    Dim WB As Workbook
    
    Dim lcol_from As Long
    Dim lrow_insert As Long
    
    Set shb = ActiveSheet
    a_path = ActiveWorkbook.Path & "\"
    
    csvF = Dir(a_path & "*.csv", vbNormal)
    
    Application.ScreenUpdating = False
    Do Until csvF = ""

        Set WB = Nothing
        Set sh = Nothing

        Set WB = Workbooks.Open(Filename:=a_path & csvF, ReadOnly:=True, Local:=True)
        Set sh = WB.Worksheets(1)
        lcol_from = sh.Cells(1, sh.Columns.Count).End(xlToLeft).Column
        lrow_insert = shb.Cells(shb.Rows.Count, 1).End(xlUp).Row + 1
        shb.Range(shb.Cells(lrow_insert, 1), shb.Cells(lrow_insert, lcol_from)) = _
            sh.Range(sh.Cells(1, 1), sh.Cells(1, lcol_from)).Value
        WB.Close False
        csvF = Dir()
    Loop
    Application.ScreenUpdating = True
End Sub
Изменено: heso - 03.02.2020 10:53:04 (.xls -> .xlsm)
 
Что-то не вяжется. Если вы пишите именно в xls, и в каждом csv имеется минимум одна строка, то где-то в районе 64к строк эти строки в файле кончаются, и тут вы плывете.
Или все таки в xlsx/xlsb?
Вот горшок пустой, он предмет простой...
 
PooHkrd,
xlsm, пардон, поправил.
 
А принципиально макросом? Может PQ?
Вот горшок пустой, он предмет простой...
 
PooHkrd,
абсолютно не принципиально, но хотелось бы понять всё-таки.
 
heso, про понять, это не ко мне, я в ВБА не шарю, а если не принципиально, то киньте для примера пару-тройку файлов и какой результат хотите получить в итоге, смогу накидать вариант на PQ.
Обязательно уточните нужно ли данные добавлять к уже существующему массиву или всегда загружать заново поверх уже имеющихся.
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх