| К примеру, есть у вас несколько десятков (или сотен) текстовых файлов с подобным содержимым:(количество файлов, и количество строк данных в каждом файле не ограничено)
 1c04;1J0-698-151-G;1 комплект тормозных накладок;1J0698151G;1J0698151G;5;11c04;1H0698151A;Тормозные колодки;1H0698151A;1H0698151A;1;1
 1c04;1K0-698-151-B;Тормозные колодки;1K0698151B;1K0698151B;2;1
 А надо из всего этого сформировать табличку в Excel - приблизительно такого вида: На помощь придёт функция DATfolder2Array Sub ПримерИспользованияФункции_DATfolder2Array()     Папка = "D:\Проекты\DATs\"    ' папка, в которой будет производиться поиск файлов DAT для обработки     Dim ErrorsArray    ' пустой массив для ошибок 
     ' считываем данные из все файлов .DAT в папке в двумерный массив     DataArr = DATfolder2Array(Папка, 7, "1,2,4,5", ErrorsArray)       ' результаты выводим на листы "errors" и "result" (они должны существовать)     Array2worksheet Worksheets("errors"), ErrorsArray, _                     Array("Имя файла", "Номер строки", "Данные из строки")     Array2worksheet Worksheets("result"), DataArr, _                     Array("Ячейка", "Штрих-Код", "Наименование", "код 1С", "код произв.", "кол-во", "счетовод") End Sub Код функции DATfolder2Array: Function DATfolder2Array(ByVal FolderPath$, ByVal ColumnsCount As Long, _                          ByVal TextColumns$, ByRef ErrorsArr) As Variant     ' получает путь FolderPath$ к папке с DAT-файлами     ' считывает из файлов все строки, в которых число записей в строке равно ColumnsCount     ' остальные (неподходящие) строки отправляет в массив ErrorsArr     ' (столбцы ErrorsArr: 1-имя файла, 2 - номер строки, 3 - данные)     ' в переменной TextColumns$ через запятую перечислены номера ТЕКСТОВЫХ столбцов     ' Возвращает двумерный массив размером N*ColumnsCount 
     ReDim ErrorsArr(1 To 1000, 1 To ColumnsCount + 2)     On Error Resume Next       Dim coll As New Collection, filename     filename = Dir(FolderPath$ & "*.dat")     While filename <> ""         coll.Add filename    ' считываем в колекцию coll нужные имена файлов         filename = Dir     Wend       Dim newtxt As String, ro As String, errIndex As Long     For Each filename In coll         Application.StatusBar = "Обрабатывается файл: " & filename         newtxt = ReadTXTfile(FolderPath$ & filename)         tempArr = "": tempArr = Split(newtxt, vbNewLine)         For i = LBound(tempArr) To UBound(tempArr)             ro = tempArr(i): ro = Replace(ro, vbTab, ";")             If UBound(Split(ro, ";")) <> ColumnsCount - 1 And Len(Trim(ro)) > 0 Then                 tempArr(i) = "": errIndex = errIndex + 1                 ErrorsArr(errIndex, 1) = filename                 ErrorsArr(errIndex, 2) = "Строка " & i + 1                 ErrorsArr(errIndex, 3) = ro             End If         Next i         newtxt = Join(tempArr, vbNewLine)         txt = txt & newtxt & vbNewLine: DoEvents     Next     While InStr(1, txt, vbNewLine & vbNewLine) > 0         txt = Replace(txt, vbNewLine & vbNewLine, vbNewLine)     Wend       txt = Replace(txt, vbTab, ";"): tempArr = Split(txt, vbNewLine)     ReDim newArr(1 To UBound(tempArr), 1 To ColumnsCount)       For i = LBound(tempArr) To UBound(tempArr)         roArr = "": roArr = Split(tempArr(i), ";")         For j = 1 To ColumnsCount             newArr(i + 1, j) = roArr(j - 1)             If "," & TextColumns$ & "," Like "*," & j & ",*" Then                 newArr(i + 1, j) = "'" & newArr(i + 1, j)             End If         Next j     Next i     DATfolder2Array = newArr     Application.StatusBar = False End Function Код вспомогательной функции Array2worksheet можно найти на странице http://excelvba.ru/code/Array2worksheet      (Перенос двумерного массива на лист Excel)  
 |