макрос импорта множества текстовых данных в Excel

Программирование на Visual Basic for Applications
AlB
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 09.06.2006 (Пт) 13:10

макрос импорта множества текстовых данных в Excel

Сообщение AlB » 09.06.2006 (Пт) 15:38

Помогите, пожалуйста новичку. Имется следующая проблема:
в папке xxx лежит множество текстовых файлов (логов), которые создаются каждый час, они имеют вид:
ГОДМЕСЯЦЧИСЛО.ЧАС ВРЕМЕНИ СУТОК
(например - 20060404.08, 20060404.23).
В каждом файле через точку с запятой пишутся 12 видов данных (порядковый уникальный номер лога, дата начала, время начала, дата конца, время конца события и числовые значения). Необходимо написать макрос, который бы последовательно импортировал все данные в 1 книгу Excel. Понимаю, что задача не очень простая, но как сделать это нигде не нашел. Буду признателен за любую помощь!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.06.2006 (Пт) 15:46

Запустить Excel.
Нажать Alt+F11.
Нажать F2.
Ввести в строку поиска "OpenText".
Нажать Enter.
Выбрать первый полученный результат поиска.
Нажать F1.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

AlB
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 09.06.2006 (Пт) 13:10

Сообщение AlB » 10.06.2006 (Сб) 14:17

Спасибо, за подсказку, вообщем-то мне понятно как сделать импорт 1-го файла, но для того чтобы сделать импорт множества файлов я думаю, нужен цикл с определенным алгоритмом. Посоветуйте конструкцию цикла, хотя бы.

Вот, что только у меня есть:

Sub импортлогов()

Workbooks.OpenText Filename:="C:\data\20060416.04", Origin:=866, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 4), _
Array(3, 1), Array(4, 4), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
Array(10, 1), Array(11, 1), Array(12, 1)), TrailingMinusNumbers:=True
'Найти последнюю строчку с данными
FinalRow = Range("A65536").End(xlUp).Row
TotalRow = FinalRow + 1
End Sub

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.06.2006 (Сб) 14:27

Открыть окно кода.
Написать Dir
Поместив курсор внутрь написанного, нажать F1.
Прочитать описание, посмотреть примеры кода.
Сделать аналогичный примерам цикл.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

AlB
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 09.06.2006 (Пт) 13:10

Сообщение AlB » 13.06.2006 (Вт) 10:23

Ребят, может чего поконкретнее подскажите...т.к. я в VBA не бум бум. Пример цикла есть, а использовать его все равно не знаю как. Может ыбть есть пример кода, который бы делал импорт 1 тестового файла, данные бы вставлялись на отдельный лист, копировались, после чего удалялись и вставлялись на основной лист и так по цепочке один за другим данные бы копились на основном листе...


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 58

    TopList