Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2012, 11:56   #1
Snekich
Форумчанин
 
Аватар для Snekich
 
Регистрация: 19.11.2011
Сообщений: 128
По умолчанию Импорт нескольких txt файлов макросом

Импорт ТХТ файла производится в 3 этапа. На каждый этап свое диалоговое окошко:
1) Импорт текстового файла = выбирается файл
2) Мастер текстов (импорт) = указываются настройки импорта
3) Импорт данных = указывается ячейка куда следует поместить данные

Мне надо что бы данные для 1 и ,если получится, 3 окна: путь к файлу и ячейка - задавались переменными, а 2 окно заполнялось вручную.

Теперь подробнее
СУТЬ ЗАДАЧИ:
В двух ячейках вручную (собственно не важно как, но информация будет браться из ячеек) указываются пути к двум файлам соответственно.
Нажимается кнопка, открывается окно "Мастер текстов (импорт)" (адрес указан в первой ячейке, т.е. что бы не открывалось окно выбора файла, а сразу настройки импорта).
Куда задать эту переменную при импорте второго файла я знаю, но не знаю как как ее задействовать при импорте первого файла.
Далее вручную указываются все настройки и файл импортируется.
При этом что бы вконце не выскакивало окошко с выбором ячейки, куда необходимо импортировать данные из файла т.к. данный адрес (ячейка) задается переменной. Как сделать эту переменную я знаю (в файле написал примечания), но не знаю как сделать так что бы она "работала".
Далее автоматически импортируется второй указанный файл с настройками, указанными при импорте первого.

ПОЧТИ ВСЕ УЖЕ СДЕЛАНО (осталось ввести только пару переменных), а именно:
Вызывается окно импорта первого файла и второй файл импортируется автоматически с такими же настройками. НО как сделать что бы при импорте первого файла не выскакивало окно с выбором этого файла "Импорт текстового файла", а сразу окно "Мастер текстов (импорт)", т.е. что бы адрес файла брался из ячейки?


Файл прикреплен, в макросах я все описал комментариями.

Помогите, пожалуйста, доделать файлик.
Вложения
Тип файла: rar импорт файлов.rar (19.7 Кб, 48 просмотров)
Нет ничего невозможного, главное верить в это.

Последний раз редактировалось Snekich; 21.01.2012 в 06:53.
Snekich вне форума Ответить с цитированием
Старый 20.01.2012, 15:03   #2
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

несколько хитро-опый способ, но у меня сработал
Вложения
Тип файла: zip импорт файлов.zip (22.1 Кб, 79 просмотров)
slan вне форума Ответить с цитированием
Старый 20.01.2012, 20:24   #3
Snekich
Форумчанин
 
Аватар для Snekich
 
Регистрация: 19.11.2011
Сообщений: 128
По умолчанию

Цитата:
Сообщение от slan Посмотреть сообщение
несколько хитро-опый способ, но у меня сработал
способ на самом деле хитрый, но жалко, что не работает. Попробовал в разных офисах - все-равно выводится диалоговое окно выбора файла...
Нет ничего невозможного, главное верить в это.
Snekich вне форума Ответить с цитированием
Старый 20.01.2012, 22:33   #4
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Я бы все же отталкивался от структуры файла txt.
возможно сделал бы схему и на ее основании импортировал бы последующие файлы.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 21.01.2012, 04:38   #5
Snekich
Форумчанин
 
Аватар для Snekich
 
Регистрация: 19.11.2011
Сообщений: 128
По умолчанию

Цитата:
Сообщение от R Dmitry Посмотреть сообщение
Я бы все же отталкивался от структуры файла txt.
возможно сделал бы схему и на ее основании импортировал бы последующие файлы.
УЖЕ ТАК И СДЕЛАНО, вопрос то в том, как путь ко всем файлам (не только последующим, но и к первому) задать в ячейке и что бы при загрузке первого файла не выводилось окошко с в котором надо выбрать файл, а сразу открывалось окно в котором задаются настройки импорта (структуры файла).
Импорт второго файла начинается с
Цитата:
With ActiveSheet.QueryTables.Add(Connect ion:= _
"TEXT;" & adres2, _
Destination:=Range("$A$1"))
где adres2 - переменная, которой задается путь к файлу
Destination:=Range("$A$1") - ячейка, в которую импортируются данные из файла

а как эти же вещи задать для первого файла, ведь первый файл импортируется путем вызова окошка импорта

Цитата:
If Application.Dialogs(xlDialogImportT extFile).Show Then
With ActiveSheet.QueryTables(1)
'запись настроек столбцов в переменные, для использования их при автоматическом импорте второго файла
MyColumn = .TextFileColumnDataTypes
MyFixed = .TextFileFixedColumnWidths
End With
вот как в этот код вставить аналогичные параметры
Цитата:
Connection:= "TEXT;" & adres1, _
Destination:=Range("$A$1")
где adres1 - переменная в которой путь к файлу
что бы окно "Импорт текстового файла" не выводилось, а сразу открывалось окно "Мастер текстов (импорт)"
Нет ничего невозможного, главное верить в это.

Последний раз редактировалось Snekich; 21.01.2012 в 06:35.
Snekich вне форума Ответить с цитированием
Старый 21.01.2012, 06:51   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Как вариант.
Вложения
Тип файла: rar Пример.rar (13.8 Кб, 68 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 21.01.2012, 07:17   #7
Snekich
Форумчанин
 
Аватар для Snekich
 
Регистрация: 19.11.2011
Сообщений: 128
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Как вариант.
Получается что настройки кодировки текста, разбивки по столбцам и тип каждого столбца надо указывать заранее (или делать какое-нибудь правило), как в вашем примере.
Но у меня то основная проблема: как вызвать окно "Мастер текстов (импорт)" и указать в нем эти настройки вручную для загружаемых в данный момент файлов (у моей ситуации по смыслу данные в файлах всегда почти одинаковые, но кодировка и структура файлов может сильно отличаться от случая к случаю).
Нет ничего невозможного, главное верить в это.

Последний раз редактировалось Snekich; 21.01.2012 в 09:42.
Snekich вне форума Ответить с цитированием
Старый 21.01.2012, 10:27   #8
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

повторюсь, у меня способ работает.

вы поняли его суть? - подсунуть мастеру имя файла и нажать интер

способ несколько ненадежный, ибо нет гарантии получения сообщения именно нужным окном..

подсовывание происходит посылкой универсального сочетания клавиш ctrl+V - т.е. вставка из буфера обмена. тут еще одна сложность, ибо из ячейки в буфер обмена просто поместить всю ячейку, как объект, но надо только текст.

можно применить функции работы с dataobject, но я решил обойтись обычными средствами. Для этого создал форму с текстбоксом, в который и поместил имя файла. вызывается форма, посылается сочетание shift+home, кот выделяет текст, потом сочетание ctrl+C кот забирает текст в буфер обмена. Форма закрывается. посылается сочетание ctrl+V+enter и тут же вызывается мастер импорта текстов. по идее окно мастера открывается и получает предварительно поданное сообщение, кот вставляет текст из буфера обмена( по умолчанию в мастере активно именно нужное нам поле) и нажимает интер(тоже действие по умолчанию) - на экране на секунду мелькает первое окно мастера(зависит от скорости компа - у меня слабый) и вуаля - появляется второе окно мастера...

проблема в том, что первое окно мастера модальное - т.е. прерывает работу макросов. и после его открытия невозможно ничего сделать(поэтому я и посылаю сообщение заранее) пока ничего другого на ум не приходит
slan вне форума Ответить с цитированием
Старый 21.01.2012, 10:43   #9
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Второй вариант(1 предложил - Slan) который можно еще придумать в данном случае, создать свой собственный мастер импорта текста, и тут уж делай что хочешь
--------------
Но способ весьма затратный по времени (в плане разработки ), но зато один раз сделаете и будете пользоваться.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 21.01.2012, 11:00   #10
Snekich
Форумчанин
 
Аватар для Snekich
 
Регистрация: 19.11.2011
Сообщений: 128
По умолчанию

Цитата:
Сообщение от slan Посмотреть сообщение
повторюсь, у меня способ работает.

вы поняли его суть? - подсунуть мастеру имя файла и нажать интер

способ несколько ненадежный, ибо нет гарантии получения сообщения именно нужным окном..

подсовывание происходит посылкой универсального сочетания клавиш ctrl+V - т.е. вставка из буфера обмена. тут еще одна сложность, ибо из ячейки в буфер обмена просто поместить всю ячейку, как объект, но надо только текст.

можно применить функции работы с dataobject, но я решил обойтись обычными средствами. Для этого создал форму с текстбоксом, в который и поместил имя файла. вызывается форма, посылается сочетание shift+home, кот выделяет текст, потом сочетание ctrl+C кот забирает текст в буфер обмена. Форма закрывается. посылается сочетание ctrl+V+enter и тут же вызывается мастер импорта текстов. по идее окно мастера открывается и получает предварительно поданное сообщение, кот вставляет текст из буфера обмена( по умолчанию в мастере активно именно нужное нам поле) и нажимает интер(тоже действие по умолчанию) - на экране на секунду мелькает первое окно мастера(зависит от скорости компа - у меня слабый) и вуаля - появляется второе окно мастера...

проблема в том, что первое окно мастера модальное - т.е. прерывает работу макросов. и после его открытия невозможно ничего сделать(поэтому я и посылаю сообщение заранее) пока ничего другого на ум не приходит
Ах вот оно что, а я то и не допер сначала куда он вставляет, если на момент этой вставки не открыто окно импорта текстового файла...
Мудрено.... но опять же повторюсь, не работает у меня: мелькает на доли секуны текстбокс и после открывает окно выбора файла... может дело в том что компьютер черезчур быстро обрабатывает буфер обмена
Нет ничего невозможного, главное верить в это.

Последний раз редактировалось Snekich; 21.01.2012 в 11:20.
Snekich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт TXT файлов в Excel Per4eLO Microsoft Office Excel 7 08.02.2017 19:33
Текст из нескольких txt файлов Federal Помощь студентам 6 28.12.2010 18:34
импорт из txt файлов и их обработка evdss Microsoft Office Excel 7 29.11.2010 04:43
автоматический импорт txt файлов в exel andreton Microsoft Office Excel 5 01.06.2010 01:29
Создание сразу нескольких txt файлов Nice42ru Помощь студентам 11 11.02.2010 18:35