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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2014, 07:59   #1
pr01
Новичок
Джуниор
 
Регистрация: 17.04.2014
Сообщений: 5
По умолчанию Выполнить макрос из другого файла

Прошу помочь знатоков. Требуется пакетная обработка файлов. Есть макросы, записанные в файлах 1.xlsm, 2.xlsm и т.д. И есть большое количество обычных файлов *.xlsx. В зависимости от содержимого (ну, скажем, в зависимости от содержимого ячейки A1) к каждому из этих файлов нужно применить преобразование, записанное в некотором файле с макросом. Т.е., например, в файле 1.xlsx выполнить макрос из 1.xlsm, в 2.xlsx выполнить макрос из 2.xlsm и.т.д. Как это сделать? Сложность именно в том, чтобы считать макрос, записанный в одном файле, и выполнить его в другом. Да, пишу программу на c#.
pr01 вне форума Ответить с цитированием
Старый 17.04.2014, 10:36   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

выглядеть это будет примерно так (на VBA):

Application.run "полный путь к файлу в одинарных кавычках!НазваниеМакроса"

например:
Код:
Application.Run "'c:\ мои файлы\1.xls'!MyMacro"
EducatedFool вне форума Ответить с цитированием
Старый 17.04.2014, 11:34   #3
pr01
Новичок
Джуниор
 
Регистрация: 17.04.2014
Сообщений: 5
По умолчанию

Прошу прощения, что не понимаю. А как при таком вызове программа узнает, в каком файле находится макрос MyMacro? Он ведь не в 1.xlsx, а в 1.xlsm.
pr01 вне форума Ответить с цитированием
Старый 17.04.2014, 11:57   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А для чего, по-вашему, перед названием макроса прописывается в кавычках полный путь к файлу с макросом?

Разумеется, макрос должен быть написан правильно, - чтобы он обрабатывал не свой файл (или первый попавшийся), а активный в данный момент файл (или файл, путь к которому передается в качестве параметра)
EducatedFool вне форума Ответить с цитированием
Старый 17.04.2014, 13:03   #5
pr01
Новичок
Джуниор
 
Регистрация: 17.04.2014
Сообщений: 5
По умолчанию

Т.е. например такой код?

Код:
Workbooks.Open FileName:="'c:\мои файлы\1.xlsx" 'открываем конвертируемый файл
Windows("'c:\мои файлы\1.xlsx").Activate 'активируем его
Application.Run "'c:\мои скрипты\1.xlsm'!MyMacro" 'запускаем в нем макрос
pr01 вне форума Ответить с цитированием
Старый 17.04.2014, 13:35   #6
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

А попробовать слабо?
kalbasiatka вне форума Ответить с цитированием
Старый 17.04.2014, 13:45   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

del.......
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 18.04.2014, 18:39   #8
pr01
Новичок
Джуниор
 
Регистрация: 17.04.2014
Сообщений: 5
По умолчанию Решено!

Отписываюсь - заработало!..
Правда, сначала я написал так:
Код:
Application.Run "c:\мои скрипты\1.xlsm!MyMacro"
и получал сообщения, что макрос не найден. но потом написал так:
Код:
Application.Run "'c:\мои скрипты\1.xlsm'!MyMacro"
и все заработало. Просто надо быть внимательнее! Спасибо всем, особенно EducatedFool
pr01 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос: обновление одного файла данными из другого darthraziel Microsoft Office Excel 33 18.09.2012 17:11
Выполнить макрос в заданной книге Gregor Microsoft Office Excel 1 18.06.2012 14:17
Выполнить макрос в excel документе WennY Компоненты Delphi 1 22.02.2012 21:03
Макрос, запускающий макрос из другого закрытого файла petruha Microsoft Office Excel 7 14.03.2010 11:31
Как выполнить процедуру (функцию) из другого модуля Всеслав Общие вопросы Delphi 4 23.05.2009 19:43