Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/137: Рейтинг темы: голосов - 137, средняя оценка - 4.64
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199

Импорт текстовых файлов в таблицы Access через VBA

13.03.2012, 14:42. Показов 26493. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При создании базы данных столкнулся с проблемой... С импортом текстовых файлов в таблицы Access. Основная трудность - в текстовых файлах разбития по столбцам как такового нет, просто есть спец символы, которые и "разделяют" данные на столбцы. Символы эти - "~"
Так вот, подскажите, пожалуйста, каким образом реализовать импорт данных в текстовых файлах в таблицы access, и чтобы разделение на столбцы как раз были по знакам "~".
Несколько моментов:
1. нужен файловый диалог, для выбора этих самых текстовых файлов (с возможностью выбора большого кол-ва файлов, т.е. мультиселекст) - я так понимаю что-то типа этого:
Visual Basic
1
2
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
Если нет, поправьте, как задать txt фильтры я что-то не понимаю(
2.Все это множество файлов импортироваться должно в одну таблицу, а в один из столбцов должно записываться имя файла.
Подскажите, пожалуйста, как решить эту задачу.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2012, 14:42
Ответы с готовыми решениями:

Импорт офисных файлов в таблицы Access через VBA (БД почтовых файлов)
помогите пожалуйста как работать с файлам в Access...основные поля и форму сделал, таблицу тоже, необходимо чтоб на форме была кнопка, при...

Импорт таблицы Excel в БД Access через VBA через кнопку в Excel
Форумчане, помогите, пожалуйста с кодом макроса в excel. Задача состоит в следующем:в файле обработчик через кнопку импортировать данные...

Импорт текстовых файлов средствами VBA. Ошибка около конструкции IN
Здравствуйте, уважаемые форумчане! Возможно я ошибся разделом. Если это так, то я не специально. Вопрос следующий. Каким образом...

26
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 6
26.07.2016, 14:22
Студворк — интернет-сервис помощи студентам
Доброго дня.
Господа, прошу помощи. Ситуация примерно та же необходимо запихать информацию из группы текстовых файлов в таблицу Access. И в принципе даже предложенное здесь решение работает (в плане пакетного импорта), вот только у меня одна заморочка каждый текстовый файл содержит 12 строк нафиг не нужной мне в базе информации (насчет будущего постоянства количества строк в будущем не уверен), каждая строка начинается с символа "#".
Реально как-то реализовать пакетный импорт данных из этих файлов в таблицу, способом разбиравшимся здесь без предварительного вырезки ненужной информации.
Т.е. можно ли в спецификации или еще каким то образом указать что при импорте необходимо игнорировать N количество первых строк каждого файла, или строки, начинающиеся с определенных символов.

Заранее спасибо.
0
 Аватар для Santares
39 / 39 / 11
Регистрация: 24.07.2016
Сообщений: 87
27.07.2016, 09:49
Я бы импортировал сначала во временную таблицу (копию рабочей) , потом - из неё, удалил бы всё ненужное по " ... WHERE ((Left([Название поля],1)="#"));" и т.п.; проверил корректность данных, и только потом уже смело импортировал в "рабочие" таблицы.
1
Модератор
Эксперт MS Access
 Аватар для shanemac51
12512 / 5086 / 814
Регистрация: 07.08.2010
Сообщений: 14,969
Записей в блоге: 4
27.07.2016, 11:44
Цитата Сообщение от Santares Посмотреть сообщение
Я бы импортировал сначала во временную таблицу
причем я все поля в этой таблице делаю текстовыми, чтобы не зависеть от умничанья аксесс/ексель

порядок действий
--импорт в таблицу с полями типа текст или мемо с добавлением поля имяПорции, для упрощения разбирательства в дальнейшем
--удаление мусорных строк
--запрос для проверки на реальный тип данных
--корректировка при необходимости прямо в аксесс

только после этого запись в основную таблицу
------------------
увы этот порядок оказался необходим ввиду отвратительного качества присылаемых текстовых/екселевских/вордовских файлов
0
 Аватар для Santares
39 / 39 / 11
Регистрация: 24.07.2016
Сообщений: 87
27.07.2016, 12:06
Цитата Сообщение от shanemac51 Посмотреть сообщение
причем я все поля в этой таблице делаю текстовыми, чтобы не зависеть
Поддерживаю на 1000%!
Отличная мысль, - получится надёжней, да и "двойная перегонка" всегда лучше
0
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 6
27.07.2016, 12:53
Спасибо. Решил почти так же. Проблема в том, что шапка файла (ненужные строки) содержит меньше столбцов. Короче в правилах импорта выставил только нужные столбцы данных, импортировал в таблицу из которой запросом выбрал значимые значения для перемещения в целевую таблицу. Как то так. Работает, но хотелось же красиво. Спасибо за ответы.
0
 Аватар для Santares
39 / 39 / 11
Регистрация: 24.07.2016
Сообщений: 87
27.07.2016, 13:06
Так ... А если читать файл построчно, отсекая ненужное сверху, пока не встретится нужное?
Что то такое у меня было ...Вот:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Private Sub esImportTextLineByLyne(sFilePath As String)
'es - 17.05.2013
'Построчное чтение текстового файла
'--------------------------------------------------------------------
Dim FF As Long
Dim i As Long     'Счетчик строк
Dim sLine As String
 
On Error GoTo esImportTextLineByLyne_Err
'Проверка наличия файла
    If Dir(sFilePath, vbNormal) = "" Then
        MsgBox "Не могу найти файл:" & vbCrLf & _
            sFilePath, vbCritical
        Exit Sub
    End If
'
'Обработка файла с данными - Чтение построчно
    FF = FreeFile
    Open sFilePath For Input As #FF ' Открывает файл для чтения.
    
    Do While Not EOF(1) ' Цикл до конца файла.
        Line Input #FF, sLine    'Читаем одну строку в переменную
        i = i + 1                'Счетчик принятых строк + 1
        Debug.Print "Строка #" & Format(i, "000") & ": " & sLine
    Loop
    Close #FF                    'Закрывает файл.
 
 
esImportTextLineByLyne_Bye:
    Exit Sub
 
esImportTextLineByLyne_Err:
    MsgBox "Error " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in procedure esImportTextLineByLyne", vbCritical, "Error!"
    Resume esImportTextLineByLyne_Bye
End Sub
0
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 1
05.01.2019, 10:51
Цитата Сообщение от minob Посмотреть сообщение
В спецификации указываем символ разделитель полей в файле, ограничитель текста, а также имена полей таблицы, в которую импортируем. Поэтому временных таблиц, а соответственно и запроса, в котором ищем тильды, не нужно.
Посмотрите во вложении.
Добрый день!
Я новичок в этом Форуме.
Я воспользовался файлом Ameli. Все работает. НО у меня проблема в том, что в моих текстовых файлах вместо тильды~ знаки разделения точка с запятой;. В этом случае макрос работает не корректно.
Прошу помощи - как мне изменить макрос для точки с запятой?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.01.2019, 10:51

Импорт текстового файла в базу Access через VBA
Есть примерно 1500 однотипных csv файлов в одной директории. Нужно их импортировать в базу(а точнее связать), используя спецификацию...

Сверка имен PDF файлов с данными из Excel таблицы средствами Access VBA
Добрый день Уважаемые Форумчане, Помогите пожалуста в следующей задаче: 1. Есть папка на сервере – в нее каждый день сохраняются...

Экспортировать дынные из таблицы HTML страницы через VBA в таблицу MS Access
Подскажите, пожалуйста, возможно ли такое сделать? Есть много файлов с таблицами одинаковой структуры. Надо чтобы по нажатию одной...

Импорт текстовых файлов .doc, .docx
Форумчане, доброго времени суток! Прошу Вашей помощи! Есть форма, через которую можно импортировать данные перечня элементов формата...

Импорт таблиц из Excel в Access средствами VBA
Здравствуйте еще раз, продолжаю разбираться с MS Access и VBA. И появился еще один вопрос. Я организовал выгрузку всей базы в Excel файл по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru