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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2008, 16:55   #1
Ivann
 
Регистрация: 28.08.2008
Сообщений: 4
По умолчанию Автоматическое формировании таблицы данных из множества файлов

Привет всем.
Есть небольшая задача. Выполнить своими мозгами не могу. Поэтому прошу вашей помощи.

Есть множество однотипных файлов Excel, расположенных в одной папке.
Необходимо сформировать таблицу в новом файле, в которой будут использоваться одни и теже ячейки из каждого файла
в исходной папке.
Чтобы понятнее было.
Во множестве файлов в определенных ячейках есть фамилия и номер.
ТАблица нужна вида:
номер фамилия
номер фамилия
номер фамилия
....
номер фамилия
номер фамилия

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

Надеюсь объяснение понятно. Что-то подсказывает что это не трудно, но отсутствие знаний в этой области не позволяют решить эту задачку.
Спасибо всем откликнувшимся.
Ivann вне форума Ответить с цитированием
Старый 01.09.2008, 07:16   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение. Пусть во всех ".xls" файлах в ячейке "A1" находится фамилия, а в ячейках "B1" - номер. (если адреса ячеек другие - измените соответствующие значения в коде макроса). Рабочий файл "Work.xls" должен находиться в той же папке, что и обрабатываемые файлы.
Макрос перебирает все "xls" файлы в папке (кроме рабочего) и в нужных ячейках создает требуемые ссылки. Затем эти ссылки удаляются, а полученные по ним значения остаются. Такой метод позволяет не открывать каждый файл, что существенно экономит время.
Надеюсь, что я Вас правильно понял.
Вложения
Тип файла: rar Work.rar (12.5 Кб, 152 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 01.09.2008, 14:17   #3
Ivann
 
Регистрация: 28.08.2008
Сообщений: 4
По умолчанию

спасибо большое, к вечеру гляну, по результатам отпишусь
Ivann вне форума Ответить с цитированием
Старый 02.09.2008, 22:50   #4
Ivann
 
Регистрация: 28.08.2008
Сообщений: 4
По умолчанию

Отлично, работает. Теперь стараюсь переделать под себя.
Спасибо.
.....
Странно сейчас дома проверил, не работает. А на работе все пашет.

Есть правда еще вопрос:
на работе работа организована с помощью удаленного рабочего стола, и при работе путь myPath используется сетевой(к папке Мои документы на сервере). Как только я отключаю сеть то макрос уже использует фактический путь к используемой папке на локальном диске. В общем это не страшно, но если есть решение был бы трижды благодарен.
Ivann вне форума Ответить с цитированием
Старый 03.09.2008, 05:03   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Я не случайно оговорил, что все файлы (и рабочий и обрабатываемые) должны находиться в одной папке. Потому, что путь к обрабатываемым файлам берется тот же, в котором находится файл с данным макросом. Попробуйте вместо
Код:
myPath = CurDir & Application.PathSeparator
использовать
Код:
myPath = ThisWorkbook.Path & Application.PathSeparator
но, по-моему, это не принципиально.
А если есть необходимость, то в коде макроса можно присвоить переменной myPath конкретный путь к файлу. Тогда рабочий файл может находиться в любой директории.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 03.09.2008, 09:15   #6
Ivann
 
Регистрация: 28.08.2008
Сообщений: 4
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Я не случайно оговорил, что все файлы (и рабочий и обрабатываемые) должны находиться в одной папке. Потому, что путь к обрабатываемым файлам берется тот же, в котором находится файл с данным макросом.
Я это понял, у меня они и находятся в одной папке
Цитата:
Сообщение от SAS888 Посмотреть сообщение
Попробуйте вместо
Код:
myPath = CurDir & Application.PathSeparator
использовать
Код:
myPath = ThisWorkbook.Path & Application.PathSeparator
но, по-моему, это не принципиально.
А если есть необходимость, то в коде макроса можно присвоить переменной myPath конкретный путь к файлу. Тогда рабочий файл может находиться в любой директории.
Еще раз громадное спасибо. Буду пробовать.
Главное, что работает
Ivann вне форума Ответить с цитированием
Старый 04.09.2008, 11:12   #7
RUBEY
Пользователь
 
Регистрация: 19.03.2007
Сообщений: 53
По умолчанию

Вклинюсь и я. Очень полезный макрос и работающий. Только вот как его модифицировать, чтобы разрулить файлы по определенным строкам в сводке. Например файл Отчет11 должен попадать в 1 -ю строку, файл Отчет 22 в 3-ю строку и т.д. То есть в зависимости от имени файла формировать нужную сводную строку.
Если это не сложно, то буду благодарен за подсказку.
Рубей.
RUBEY вне форума Ответить с цитированием
Старый 04.09.2008, 13:05   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

RUBEY
В коде макроса определяйте имя текущего файла в цикле, и в зависимости от этого делайте то, что Вам нужно.
Например:
Код:
If myName = "Отчет11.xls" Then...
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 17.09.2008, 15:10   #9
g213
 
Регистрация: 12.09.2008
Сообщений: 3
По умолчанию

Тоже хотелось бы продолжить тему...
Меня интересует вот эта строка
Код:
Cells(r, "B").Formula = "='" & myPath & "[" & myName & "]Лист1'!$B$1"
Можно ли тутже просуммировать значения, т.е. сделать что-то вроде
Код:
Dim k As String
k = 0
...
Do While myName <> ""
   k = k + "='" & myPath & "[" & myName & "]Лист1'!$B$1"
   ...
Заранее спасибо.
g213 вне форума Ответить с цитированием
Старый 01.10.2008, 18:31   #10
sslimer
 
Регистрация: 01.10.2008
Сообщений: 7
По умолчанию

А у меня такой вопрос. У меня тоже задача получать данные из другого файла. Но у меня ситуация такая:
Таблица, в которой в 2х столбцах вносятся дата и номер соответственно.
Нужно сделать так, что бы данные из этих столбцов попадали в отдельный файл, но уже отформатированные и отсортированные по дате.
Что бы понятней было:
01.01.2006 №1
-----------------
-----------------
-----------------
-----------------
02.01.2006 №4
-----------------
-----------------
03.01.2006 №11
и т.д.
Помогите пожалуйста
Кстати, числа указаные в таблице не имеют формата "дата/числа/денежные и т.д."

Последний раз редактировалось sslimer; 02.10.2008 в 10:39.
sslimer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
копирование данных из таблицы в таблицу Sack Microsoft Office Access 1 16.09.2008 05:59
Создание новой таблицы на основе данных koda Microsoft Office Excel 2 06.08.2008 18:53
Выбор данных из таблицы Mysql в кодировке Utf - 8 OSKiller PHP 4 26.01.2008 10:04
Копирование данных из одной таблицы в другую! фЁдОр БД в Delphi 18 06.01.2008 19:27