|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.04.2012, 19:41 | #1 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 87
|
Открытие группы файлов и выполнение в них макроса.
Здравствуйте.
Задача такова - открывать поочерёдно файлы и выполнять в них заранее написанный макрос, обычно этот макрос выполняется нажатием на соответствующую кнопку. Названия у всех файлов уникальны, поэтому их придётся указывать где-то отдельно. После выполнения следует закрыть открытый файл с сохранением изменений. И желательно если при выполнения макроса возникала ошибка то открывался следующий файл. Похожие вопросы уже поднимались на форуме, но я не смог сам интерпретировать их под свою проблему. Заранее всем спасибо. |
23.04.2012, 20:35 | #2 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Я так думаю, что этот макрос во всех файлах один и тот же?
Если да, то проще схему поменять - помещаете макрос в файл-инструмент (или в personal.xls), меняете его на работу с активным файлом (ну или меняете на работу с конкретной открытой книгой), затем в цикле открываете все нужные файлы и обрабатываете одним макросом. В тех файлах макросы можно оставить, если он ещё нужен для других задач. Можно перебирать все файлы определённой папки, или фильтровать их по определённому критерию, ну а если они раскиданы как попало и ничего общего не имеют - тогда составляйте список (массив имён) и перебирайте его.
webmoney: E265281470651 Z422237915069 R418926282008
|
23.04.2012, 20:41 | #3 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 87
|
да макрос везде один и тот же. а то что эти макросы ссылаются на информацию в этих файлах это не повредит? хотя кажется не должно... а как это выглядеть будет? еслиб я знал как это реализовать я бы наверное не стал сюда обращаться... а то я ни когда не работал с подобными вещами... а времени разбираться почти нет в новых тонкостях.
|
23.04.2012, 20:48 | #4 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Вот нашёл подходящую цитату (автор кода Казанский):
=================================== =========================== Есть папка. В ней ещё несколько папок. В них куча абсолютно одинаковых по структуре файлов. Задача: макросом зайти в каждый файл и сделать следующее: 1. Снять защиту листа, пароль"123" 2. Скопировать - вставить значение объединённой ячейки В8 3. Удалить все столбцы правее столбца О 4. Удалить все строки ниже строки 30 5. Удалить все коды что находятся в модуле "Эта книга" 6. Сохранить файл в том же месте, где он и был, под тем же именем. Казанский 10.10.2010, 21:38 Вот код модуля. В соответствии с заданием, пароль на лист обратно не устанавливается. Код:
Но конечно нужно смотреть конкретно, что там за макросы, что они делают. Но если это не макросы, обрабатывающие события листа/книги, то практически всегда (сейчас не вспомнил случая, когда это не возможно) нет разницы, где они находятся - всегда их можно переделать на работу из другой книги.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 23.04.2012 в 20:54. |
23.04.2012, 20:54 | #5 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 87
|
на первый взгляд именно то что мне надо. Из приведённых 6ти пунктов мне надо выполнить только шестой и вместо пяти первых по сути нажатие на определённую кнопку на определённом листе. Как мне кажется это гдето должно быть здесь:
Код:
|
23.04.2012, 21:15 | #6 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Что делает эта кнопка?
Зачем её нажимать (это сделать думаю не получится, или очень трудно, я даже думать на эту тему не собираюсь... ибо бестолково) - проще выполнить такой же код в файле-обработчике. Если это конечно возможно.
webmoney: E265281470651 Z422237915069 R418926282008
|
23.04.2012, 23:13 | #7 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 87
|
я об этом не задумывался... точнее точно не знаю возможно ли это... кнопка выполняет следующее - считывает с разных листов информацию (в основном значения) и передаёт их в макрос что бы тот с этой информацией уже работал, макросов разных много потом вся полученная информация сохраняется на других листах файла... как-то так... я думал что есть функция типа "CommandButton1_Click()" которая без нажатия запустит выполнения всех функций которые под этим заложены... просто я изначально всё делал под вариант с кнопкой, а щас надо очень большое количество данных обработать за быстрое время, и хочется автоматизировать процесс...
|
23.04.2012, 23:13 | #8 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 87
|
могу для примера приложить пробный файл
|
23.04.2012, 23:22 | #9 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Ну можно конечно программно выполнить CommandButton1_Click(), раз уж там в цепочке много макросов завязано.
Что-то вроде Application.Run "Книга1!CommandButton1_Click" Но лучше покажите файл, мы посмотрим.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 23.04.2012 в 23:26. |
23.04.2012, 23:36 | #10 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 87
|
нужная кнопка находится на листе "ввод информации" кнопка называется "пресс ми!" закрывать надо файл когда в ячейке О12 будет написано "закончил"
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Повторное выполнение макроса | Jaroslav | Microsoft Office Excel | 3 | 26.07.2009 10:12 |
Как остановить выполнение макроса ? | kzld | Microsoft Office Excel | 2 | 19.07.2009 13:16 |
Выполнение макроса при нажатии на Лист | KinderX | Microsoft Office Excel | 7 | 01.07.2009 17:19 |
Открытие необходимой группы в локальной сети (UNC) | nixstill | Работа с сетью в Delphi | 0 | 15.01.2009 13:56 |
Выполнение макроса во всех листах | Bu$ter | Microsoft Office Excel | 18 | 14.11.2008 14:34 |