Страницы: 1
RSS
Импорт данных из текстового файла в Excel с помощью vba
 
Здравствуйте,

Хочу сразу написать - пользовался поиском, но скорее всего в силу отсутствия опыта нужное мне решение не нашел.
Эксель только учу, но некоторые задачи решать надо уже сейчас.
Итак, суть проблемы.
Имеется текстовый файл формата .asvp
в заголовке у него общая информация, из которой мне необходимы только значения координат.
Дальше идут 2 столбца данных - глубина и значение скорости звука.
На выходе мне неплохо бы получить макрос, который брал бы название файла, дату и время создания файла, значения координат и записывал в разные ячейки. Потом 2 столбца с данными о скорости звука должны записываться в 2 столбца экселя соотвественно.
Новый файл добавляется каждый час и каждый раз нужна информация из нового. Вручную создаем новую вкладку(копия предыдущей, так как в рабочем файле еще и график строится).
Прикрепляю 2 файла примера - эксель, заполненный в ручную в виде желаемого результата и исходный текстовый файл.
Надеюсь на Вашу поддержку.
 
Здравствуйте!
Обратитесь к объекту FSO ( http://citforum.ru/programming/digest/fsovb6.shtml )
Там, скорее всего, есть всё (ну, или почти всё), что Вам нужно для решения данной задачи.
Если же Вам нужно готовое решение, создайте тему в разделе "Работа" и предложите свою стоимость, т.е. сколько Вы готовы за эту работу заплатить.
Изменено: Михаил Лебедев - 08.09.2020 09:37:15
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
FSO на маках вроде нет...
 
А где тут мак?
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Внутри xlsx файла. :)  
Владимир
 
Не, мак в зипе, я начал с просмотра источника.
 
Маки видны сразу в \docProps\app.xml: :)
Код
<Application>Microsoft Macintosh Excel</Application>
Изменено: sokol92 - 08.09.2020 16:53:09
Владимир
 
Я xlsx не смотрел, но тем более :)
Я бы тоже на FSO делал (если бы было желание заняться), ну а для мака даже не знаю как...
Хотя если дату+время создания файла нужно брать не из свойств, а из содержимого файла, тогда вполне можно
Код
Open FileFullPath For Input As #1
    While Not EOF(1)
        Line Input #1, txtLine
и т.д.

Вот, надеюсь диалог выбора сработает, нет упоминаний на docs.microsoft.com что не для маков:
Код
Sub tt()

    Dim FD As FileDialog

    Set FD = Application.FileDialog(msoFileDialogFilePicker)
    With FD
        With .Filters
            .Clear
            .Add "Файлы MVP_*.asvp", "*.asvp*"
        End With
        If .Show = False Then Exit Sub
    End With

    FileFullPath = FD.SelectedItems(1)

    Open FileFullPath For Input As #1
    While Not EOF(1)
        Line Input #1, txtLine
        txtLine = Trim(txtLine)
        If Left(txtLine, 1) = "(" And Right(txtLine, 1) = ")" Then
            a = Split(txtLine)
            i = i + 1
            Cells(i, 1) = "File name"
            Cells(i, 2) = Right(FileFullPath, 26)
            i = i + 1
            Cells(i, 1) = "TIME"
            Cells(i, 2) = Mid(a(6), 9, 2) & ":" & Right(a(6), 2)
            i = i + 1
            Cells(i, 1) = "LAT"
            Cells(i, 2) = a(7)
            i = i + 1
            Cells(i, 1) = "LON"
            Cells(i, 2) = Replace(a(8), "-", "")
            i = i + 1
            Cells(i, 1) = "Depth"
            Cells(i, 2) = "Speed of sound"
        Else
            i = i + 1
            Cells(i, 1).Resize(, 2) = Split(txtLine)
        End If

    Wend
    Close #1

End Sub
Изменено: Hugo - 08.09.2020 17:41:13
 
Добрый вечер!
Всем спасибо за ответы.
Вообще файл не для мака, просто пришлось на нем сохранять и отправлять. Сегодня прикрепляю версию с рабочего компа плюс архив с asvp файлом,который пришлось сжать на маке, но это обычный текст.
Сегодня занялся изучением FSO самостоятельно и достиг некоторых результатов (не без чужого кода, но все же):
1) Смог прочитать *.asvp файл в заданном каталоге и вытянуть с него название файла и значения координат.
2)Немного облегчить жизнь и копировать текущую вкладку с новым именем и выполнять по импорту данных в ней с кнопки(задача легкая, но я впервые сегодня работал с редактором VBA так что не смейтесь пожалуйста.)
Что не получилось:
1)Искать последний записанный в каталог файл и читать информацию с него
2)Скопировать весь массив данных глубины/скорости и перенести в нужные колонки.
Если не сложно, посмотрите что получилось и может что нибудь посоветуете (не жду готовое решение, хотя бы на чем конкретно сосредоточится в изучении, что бы решить данную задачу).
Заранее спасибо!
 
А то что я выше писал не видите чтоль? Ну а если я зря столько писал - ладно, больше не буду...
 
Цитата
Hugo написал:
А то что я выше писал не видите чтоль? Ну а если я зря столько писал - ладно, больше не буду...
Тысяча извинений, на маке не получилось запустить, но на винде все пошло на отлично!
Спасибо Вам огромное за кол - так даже лучше с возможностью выбора файла.
 
На маке не работает, или не пробовали?
 
Цитата
Hugo написал:
На маке не работает, или не пробовали?
Не запускает макрос и выводит следующую ошибку:

Ошибка компиляции
Пользовательский тип не определен
 
Вероятно нет там FileDialog.
Можно пробовать убрать этот тип вообще, может Application.FileDialog(msoFileDialogFilePicker) там всёж есть.
Страницы: 1
Наверх