vaulin
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Как открыть каждый текстовый файл в каталоге, содержащие по одной строчке, и загрузить в определённые строчки таблицы, разбив на ячейки учитывая разделители (;), с минутной периодичностью? | Цитата: Да, я посмотрел на примерчег и решил на первых порах ручками вбивать пути к файлам )) Пока эта автоматизация не принципиально важна. Другой вопрос - п.2, работа с содержимом файлов. | faust2k, вот еще вариантик решения твоей задачи: Код: Sub macro1() ' Макрос открывает файлы с именами, записанными в strFiles, ' читает содержимое, разделяет содержимое по разделителю ";" ' и записывает это содержимое в строки. Повторяет это через ' время PauseTime (секунды) ' Записан vin Dim MyChar As String, strTmp As String, ArrLength As Long Dim i As Integer, j As Integer, k As Integer, step As Integer Dim strFiles(3) As String, strPath As String Dim PauseTime, Start, Finish, TotalTime On Error GoTo handleCancel ' Прерывание программы по нажатию Ctrl+Breake Application.EnableCancelKey = xlErrorHandler MsgBox "This may take a long time: press Ctrl+Breake to cancel. Для прерывания программы, нажмите Ctrl+Breake" strPath = "F:\Work\temp\" strFiles(1) = strPath & "Текстовый документ.txt" strFiles(2) = strPath & "Текстовый документ (2).txt" strFiles(3) = strPath & "Текстовый документ (3).txt" ArrLength = UBound(strFiles) - LBound(strFiles) 'длина массива с именами файлов, strFiles i = 1 ' Пременные для задания строк таблицы, k = 0 ' в кот. будут записываться значения step = 6 ' из файлов Do For j = 1 To ArrLength Open strFiles(j) For Input As #j 'Открываем файл функцией Open() на чтение Do While Not EOF(j) strTmp = Input(1, #j) 'считывание очередного символа из файла If (strTmp <> ";") Then 'читается все, кроме разделителя ";" MyChar = MyChar & strTmp ' Получаем по одному символу и добавляем его к предыдущим End If If ((strTmp = ";") Or EOF(j)) Then 'запись считанных значений в определенные строки Worksheets("Лист1").Cells(i + (j - 1) * ArrLength + k, 1).Value = LTrim(MyChar) MyChar = "" i = i + 1 End If Loop Close #j ' Закрываем файл Next PauseTime = 3 ' Пауза в секундах Start = Timer ' Set start time. Do While Timer < Start + PauseTime DoEvents ' Позволяем другим процессам работать Loop k = k + step ' Сдвиг по строкам Loop handleCancel: 'Прерывание выполнения программы после нажатия Ctrl+Breake If Err = 18 Then MsgBox "Game over!" End If End Sub | При этом изначально создан текстовый файл "F:\Work\temp\Текстовый документ.txt" с содержимым: first; first; first и два других подобных файла. Макрос берет содержимое из этих файлов и вставляет его по строкам через каждые 3 секунды. Время можно поменять. Если не устроит, пиши, подправим! | Всего записей: 80 | Зарегистр. 16-10-2008 | Отправлено: 12:25 15-11-2010 | Исправлено: vaulin, 12:33 15-11-2010 |
|