Всем привет!
Собственно, сабж. Предпосылки: есть база данных предприятия. Дважды в день я экспортирую таблицы в текст (с разделением табуляцией), а эти текстовые файлы заранее связаны с Access, как внешние источники данных. проблема в том, что некоторые юзеры вносят в текстовые поля таблиц символы Tab, копируя артикулы из чужих программ. При этом в текстовых файлах съезжают поля и Access начинает матюгаться (я его использую для отчетов). Придумал следующее: открывать текстовые файлы для чтения на VBA, подсчитывать кол-во Chr(9) в каждой строке, а при несовпадении с установленным эталоном выводить в лог на лист Excel. Работает довольно быстро, но вот проблема: в двух таблицах есть зашифрованные бинарные поля, которые изобилуют символами EOF (Ctrl+Z, #1A) и чтение файла обрывается. Пробовал читать, как бинарник, потом разделять на строки:
, потом в цикле перебирать массив, НО чтение файла :
для больших файлов (~60-70мб) требует нереально много времени.
Пожалуйста, предложите какой-нибудь шустрый метод. Только просьба есть: если предложенный вариант будет предполагать использование ADO или API, в двух словах опишите как это работает.
PS: код в приложенном файле не будет работать в отрыве от реальных данных. Там на определенном листе в книге personal.xlsb находится перечень файлов и эталонное значение.
Собственно, сабж. Предпосылки: есть база данных предприятия. Дважды в день я экспортирую таблицы в текст (с разделением табуляцией), а эти текстовые файлы заранее связаны с Access, как внешние источники данных. проблема в том, что некоторые юзеры вносят в текстовые поля таблиц символы Tab, копируя артикулы из чужих программ. При этом в текстовых файлах съезжают поля и Access начинает матюгаться (я его использую для отчетов). Придумал следующее: открывать текстовые файлы для чтения на VBA, подсчитывать кол-во Chr(9) в каждой строке, а при несовпадении с установленным эталоном выводить в лог на лист Excel. Работает довольно быстро, но вот проблема: в двух таблицах есть зашифрованные бинарные поля, которые изобилуют символами EOF (Ctrl+Z, #1A) и чтение файла обрывается. Пробовал читать, как бинарник, потом разделять на строки:
Код |
---|
DataArr()=Split(BigStr,VbNewLine) |
Код |
---|
BigStr=Input(LOF(f),f) |
Пожалуйста, предложите какой-нибудь шустрый метод. Только просьба есть: если предложенный вариант будет предполагать использование ADO или API, в двух словах опишите как это работает.
PS: код в приложенном файле не будет работать в отрыве от реальных данных. Там на определенном листе в книге personal.xlsb находится перечень файлов и эталонное значение.