Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Перенесено из VB6/MS Access]загрузить текстовый файл в excel 
:(
    Опции темы
cASSAndra
Дата 19.9.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



добрый день, у меня такая вот ситуация. есть n-ное количество текстовых файлов, данные в которых разделены символами табуляции и новой строки. мне надо все эти n файлов засунуть в один документ Excel на разные листы. как этот файл засовывать в excel построчно я нашла, но так слишком долго будет. не существует ли какой-то команды типа loadfile, чтобы не по ячейкам все копировать, а сразу весь документ добавлять? как с cтравливанием xml и xslt?

 smile 
PM MAIL   Вверх
kapbepucm
Дата 19.9.2008, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 3
Всего: 12



Workbooks.OpenText?


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
cASSAndra
Дата 19.9.2008, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



может быть и так. а с его помощью можно выводить несколько файлов на несколько листов в одну и ту же книгу?
PM MAIL   Вверх
Akina
Дата 19.9.2008, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



По одному. Вручную.
Или написАть макросик, который сделает это программно.
Но тебе быстрее вручную.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
cASSAndra
Дата 19.9.2008, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



Цитата

По одному. Вручную.
Или написАть макросик, который сделает это программно.
Но тебе быстрее вручную. 


 smile  да конечно, быстрее вручную... да и к макросам это отношения не имеет. это все не из Excel запускается.

ситуация такая. пишу отчеты в крупной банковской системе, которая у нас почти не используется. хитрыми манипуляциями получаю список проводок за день/месяц/квартал в разрезе по всем отделениям банка (неограниченное число). сколько отделений, столько текстовых файлов получается. текстовый формат - дурацкое требование банка. иначе вывела бы все данные в xml файлы, создала xslt шаблон и просто потом стравила бы их, получив документ Excel за 2 секунды.

вся фишка в том, что в системе это пишется в vb скриптах и б'ольшая часть того что можно найти по .NET естественно не катит. 
нашла пример с OpenText пример
помоему таким же макаром можно и через просто Оpen открыть - все нормально выводится. но мне надо несколько документов загнать в одну книгу и на разные листы (для каждого отделения - свой текстовый файл и свой лист в Excel соответственно).  - это чтобы пользователю нагляднее смотреть было, если отчет вручную запустят, а не в процедурах закрытия дня. при запуске в закрытии дня этот Excel никому нафиг не нужен  smile 

может есть что-то типа Excel.Workbooks(1).Worksheets(i).Open(Path(i))?

если построчно писать - отчет систему повесить может часа на 2 думаю - надо же по всем отделениям за квартал проводки выводить - ато и за год, если кому приспичит  smile 

Это сообщение отредактировал(а) cASSAndra - 19.9.2008, 19:19
PM MAIL   Вверх
Akina
Дата 19.9.2008, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Ну собсно делаем макросик... 
Список файлов по шаблону в каталоге получить (думаю, свалить их в один каталог тебе несложно) - дело плёвое. Dir(). А еще лучше - подергать за FSO.Files.
А далее собсно обертываем это дело в цикл.
Получили очередное имя файла. Отрезаем расширение. Создаем НОВЫЙ (!!!) лист с таким именем. Делаем его активным. Делаем на него импорт текстового файла...
Полученный макрос запихиваем в девственно-чистую книгу с одним листиком и стартуем - по окончании его работы книга набита листами с данными.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
cASSAndra
Дата 20.9.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



так... из всего вышесказанного, мне надо всего-то сначала активировать нужный лист...

Excel.WorkBook(1).WorkSheet(i).Active
Excel.WorkBook(1).Open(Path(i))

спасибо, попробую. я про активацию не знала, так как вообще с Excel раньше не работала. список файлов получать не надо - он в массиве лежит  smile 
ЗЫ пишется это все не в макросах Excel, а в хитрой системе по имени Temenos T24  smile 

PM MAIL   Вверх
Akina
Дата 20.9.2008, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Достаточно
Код

Sheets.Add ' Новый лист не только создается, но и становится текущим
ActiveSheet.Name = "123" ' Даем ему какое нравится имя



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
cASSAndra
Дата 22.9.2008, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



ну вот после этого видимо надо написать

Код

Excel.Workbooks.Open(Path(i))


он создал книгу с кучей страниц с нужными именами, а все файлы открыл в отдельных документах   smile   а Excel.Workbooks(1).Open(Path(i)) не воспринимает

PM MAIL   Вверх
Akina
Дата 22.9.2008, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(cASSAndra @  22.9.2008,  10:28 Найти цитируемый пост)
ну вот после этого видимо надо написать

Конечно нет. Open - это открыть в новом документе. Что просишь - то и получаешь. Надо
Код

ActiveSheet.QueryTables.Add(Connection:= Path(i), Destination:=Range("A1"))

Ну в принципе можно натолкать еще груду необходимого кода - специфицирующего, форматирующего и пр.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
cASSAndra
Дата 22.9.2008, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



а эту QueryTables объявлять как-то надо? пишет ошибка в скрипте...

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

Код

Excel.WorkBooks(2).ActiveSheet.Copy(EmptyParam, Excel.WorkBooks(1).WorkSheets(5))


тоже ошибка в скрипте  smile 

Это сообщение отредактировал(а) cASSAndra - 22.9.2008, 11:49
PM MAIL   Вверх
Akina
Дата 22.9.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



О мамма миа!!!
Сервис - макрос - начать запись
Данные - импорт внешних данных - импортировать данные
Выполните импорт файла на текущий лист
Сервис - макрос - остановить запись
Сервис - макрос - макросы
Выбрать свежезаписанный макрос
Изменить.

И изучайте...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
cASSAndra
Дата 22.9.2008, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



написала я по образцу макроса - ошибок не выводит, но и ничерта ничего не добавляет в документ. тут не полноценный VB, а какойто его обрубок. б'ольшая половина стандартных команд просто игнорируется...
PM MAIL   Вверх
Akina
Дата 22.9.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(cASSAndra @  22.9.2008,  14:53 Найти цитируемый пост)
ошибок не выводит, но и ничерта ничего не добавляет в документ.

А ссылку на файл в Path(i) небось относительную даем, а?

Цитата(cASSAndra @  22.9.2008,  14:53 Найти цитируемый пост)
тут не полноценный VB, а какойто его обрубок.

Тут вообще не VB, а VBA. Это другой язык. Хотя синтаксически очень похож.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
cASSAndra
Дата 22.9.2008, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



да я и впеременной передать пробовала и так забить...

вот получилось скопировать лист из одной книги в другую таким способом

Код

Excel.Workbooks(fileList(i)).Worksheets(1).Copy Excel.WorkBooks(fileList(i-1)).Worksheets(1)


пожалуй так и сделаю. в любом случае - спасибо за помощь. вот про запись макросов - ценная информация. я про это раньше и не слышала   smile 

Это сообщение отредактировал(а) cASSAndra - 22.9.2008, 14:50
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.1987 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.