|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
Добрый день, уважаемые знатоки! К сожалению не смог найти похожего решения, поэтому решился создать тему. Подскажите, пожалуйста код, или натолкните на подобный макрос. Суть макроса: в ячейках D3:I6 файла ИТОГ собираются данные из книг 1-3. Т.е. 1) макрос открывает книгу в соответсвии с именем в столбце А, 2) переходит на лист этой книги в соответствии с именем в столбце В, 3) находит строку по условию в соответсвии со столбцом C и копирует диапазон D:I этой строчки в файл ИТОГ. Заранее буду очень признателен! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 15:00 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
Стандартный ответ: включаешь запись макроса, проделываешь все действия, открываешь получившийся макрос, переделываешь под свою задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 16:22 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
Я не силен в VBA, но насколько я понимаю после обычного макрорекодера придется многое переписывать... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 17:30 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
maxxver, и без макросов можно обойтись. используйте функцию =ДВССЫЛ() ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 17:53 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
вот тут MS пишут http://support.microsoft.com/kb/278973 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 17:57 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
Спасибо! Буду изучать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2012, 08:58 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
ДВССЫЛ не работает с закрытыми книгами, ВПР работает: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Предполагается, что файлы с данными находятся в одной папке. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2012, 11:26 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
Спасибо, Казанский! Но ВПР я уже пробовал, он действительно работает, но очень долго (в реальной задаче много файлов ~30 и строк с показателями ~800), я надеюсь что есть более быстрое решение через копирование если его реализвать в подобной схеме: - открывается файл; - переходим на лист; - копируем данные с нужных показателей в нужные строки свода; - переходим на следующий лист (если есть); - копируем данные; - закрываем файл; - только потом переходим к следующему файлу и повторяем операции копирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2012, 12:05 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
maxxver, я вам уже говорил, что открывать файлы - ахинея полная. читайте по ссылке получение данных через ADO ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2012, 13:57 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
PlanBmaxxver, я вам уже говорил, что открывать файлы - ахинея полная. читайте по ссылке получение данных через ADO Возможно открытие файлов не самый быстрый способ, но по словам другх программистов, для ADO нужно уметь писать SQL запросы, а я в данный момент не имею времени на изучение SQL и знакомых SQL программистов... Или это проще чем мне видится? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2012, 14:34 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
Может быть у Вас есть готовое решение похожее на мою проблемку? Если есть сбросьте пожалуйста с парой строчек описания принципа (если не затруднит)... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2012, 15:11 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
PlanB, ADO в Excel не будет быстрее, чем формула. Для доступа к данным из закрытых книг в формулах Excel использует свой метод, более "заточенный" для работы именно с книгами Excel. maxxver, а Вы попробовали? За сколько времени отрабатывает макрос? > строк с показателями ~800 Это число строк в файлах? Я в формуле использовал диапазон до 9999 строки, значит, можно уменьшить до 999. Кроме того, у меня есть подозрение, что ВПР при использовании как тут (формула массива) выполняет поиск не один раз, а столько раз, сколько возвращается значений. Поэтому лучше заменить ее на ИНДЕКС(ПОИСКПОЗ)). Попробуйте, сравните скорость: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2012, 15:38 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
maxxverМожет быть у Вас есть готовое решение похожее на мою проблемку? Если есть сбросьте пожалуйста с парой строчек описания принципа (если не затруднит)...используйте поиск по этому форуму ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2012, 17:37 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
а sql там самый простой вида SELECT * FROM [ваша_таблица] ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2012, 17:38 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
PlanBа sql там самый простой вида SELECT * FROM [ваша_таблица]Смысл? - именно при таком использовании ЭТО и не отличется от ВПР + ДВССЫЛ. А вот если использовать все возможности селектов (хотя бы в ADO), и при этом не использовать формулы листа, оперируя только рекорсетами, массивами и заполнением ячеек листа - тогда да. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2012, 02:30 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
To Казанский, оработка по ВПР занимает около 15 минут, это быстрее чем через код открытия-копирования раза в 2-3. И я бы и использвал ВПР или ИНДЕКС,ПОИСКПОЗ, но вот мой начальник настаивает что должно быть сделано через копирование, к тому же Hugo дал мне надежду что вероятность сделать быструю обработку через копирование есть. А я человек подневольный и не имею развитого дара переубеждения начальства) Остается надеятся... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2012, 10:34 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
И что-то не получается через ИНДЕКС попробовать - ругается на строку с формулой..? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2012, 10:53 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
выкладывайте "боевые" примеры ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2012, 10:54 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
Не понимаю формулы в стиле R1C1, можно Вас попросить переписать в обычном стиле, чтобы я смог разобраться что не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2012, 10:58 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
PlanBвыкладывайте "боевые" примеры Конкретные файлы выложить не смогу - слишком большие и их много, но в первом посте есть вложение тестовое, думаю если на нем будет код, то под реальные примеры у меня получится перепистать... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2012, 11:08 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
maxxverИ что-то не получается через ИНДЕКС попробовать - ругается на строку с формулой..?На каком этапе ругается - при компиляции или при выполнении? Я пробовал в Excel 2000 и 2007 - работает. Кстати, обнаружил, что процедуру с именем bb1 нельзя запустить через Alt+F8, т.к. это имя совпадает с адресом ячейки. Переименуйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2012, 11:13 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
Сразу при запуске, пишет "Нельзя установить свойство FormulaArray класса Range. У меня 2010 эксель. На счет Alt+F8 - точно подметили, а я то думал что за ерунда происходит).. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2012, 11:18 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
maxxverСразу при запуске, пишет "Нельзя установить свойство FormulaArray класса Range. У меня 2010 эксель. На счет Alt+F8 - точно подметили, а я то думал что за ерунда происходит)..Может, пути у Вас слишком длинные? Вот, попробуйте с макросом в Вашем примере. А формула такая (ее можно увидеть при пошаговом выполнении программы, ессно, если она вставится): Код: plaintext
У меня все книги лежат в C:\temp\1\ . ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2012, 11:28 |
|
Макрос: открыть книгу, перейти на лист, найти строку и скопировать
|
|||
---|---|---|---|
#18+
maxxverСразу при запуске, пишет "Нельзя установить свойство FormulaArray класса RangeМожет, Вы в несохраненную книгу вставили макрос и запустили? В этом случае ActiveWorkbook.Path - пустая строка и ессно формула неправильная получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2012, 11:32 |
|
|
start [/forum/topic.php?fid=61&msg=37935931&tid=2175416]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 334ms |
total: | 464ms |
0 / 0 |