Полдня никак не могу победить проблему. Есть макрос (назовём его макрос1) в книге1, который в какой-то момент должен открыть файл книга2 и вызвать в нём другой макрос (макрос2). Файл открывается. В него запихиваются нужные значение. Затем должен выполниться макрос2. [vba]
Код
Call Application.Run("книга2.xls!макрос2")
[/vba] Макрос2 находится в модуле. Процедур в этом модуле хренова куча и других модулей в файле книга2 тоже. Но макрос2 запускает сначала процедуру которую я назначил Public. Тем не менее высвечивается ошибка Run-Time erroor '1004': Не удаётся выполнить макрос "Книга2.xls!макрос2". Возможно, этот макрос отсутствует в текущей книге либо все макросы отключены.
Полдня никак не могу победить проблему. Есть макрос (назовём его макрос1) в книге1, который в какой-то момент должен открыть файл книга2 и вызвать в нём другой макрос (макрос2). Файл открывается. В него запихиваются нужные значение. Затем должен выполниться макрос2. [vba]
Код
Call Application.Run("книга2.xls!макрос2")
[/vba] Макрос2 находится в модуле. Процедур в этом модуле хренова куча и других модулей в файле книга2 тоже. Но макрос2 запускает сначала процедуру которую я назначил Public. Тем не менее высвечивается ошибка Run-Time erroor '1004': Не удаётся выполнить макрос "Книга2.xls!макрос2". Возможно, этот макрос отсутствует в текущей книге либо все макросы отключены.fairylive
[/vba] Сработало видимо потому что файл книга2 уже открыт.
Но теперь другая проблема. Этот макрос2 не отрабатывает как надо. Хотя если нажимать кнопку на котором висит этот макрос то файл обрабатывается с теми новыми данными из файла книга1.
Расширение файла книга2 XLS это старый файл экселя с макросами.
_Boroda_, Сдвинулся с мёртвой точки так: [vba]
Код
Call Application.Run(макрос2)
[/vba] Сработало видимо потому что файл книга2 уже открыт.
Но теперь другая проблема. Этот макрос2 не отрабатывает как надо. Хотя если нажимать кнопку на котором висит этот макрос то файл обрабатывается с теми новыми данными из файла книга1.
Расширение файла книга2 XLS это старый файл экселя с макросами.fairylive
Сообщение отредактировал fairylive - Среда, 13.07.2016, 17:34
Неправильно сдвинулись. Макросов "макрос2" может быть много - в разных книгах и даже в разных модулях одной книги. Нужно указывать книгу и модуль. Кстати, у Вас в текущей книге случайно нет ли макроса с именем "макрос2"? И еще - гнетут меня смутные сомнения, что в том макросе "макрос2", который нужен, на прописана книга, в которой тот должен работать (типа имя книги, ThisWorkbook или ActiveWorkbook). Возможно, лист тоже не прописан. Тогда макрос будет отрабатывать на текущем листе текущей книги, а не там, где Вам нужно
Неправильно сдвинулись. Макросов "макрос2" может быть много - в разных книгах и даже в разных модулях одной книги. Нужно указывать книгу и модуль. Кстати, у Вас в текущей книге случайно нет ли макроса с именем "макрос2"? И еще - гнетут меня смутные сомнения, что в том макросе "макрос2", который нужен, на прописана книга, в которой тот должен работать (типа имя книги, ThisWorkbook или ActiveWorkbook). Возможно, лист тоже не прописан. Тогда макрос будет отрабатывать на текущем листе текущей книги, а не там, где Вам нужно_Boroda_
Макрос2 имеет уникальное имя. Повториться не может. Это я его здесь на форуме так обозвал для наглядности. Вообще он в той книге Книга2 имеет имя на русском языке. Может дело в этом?
По поводу активации и thisbook. Вот так это выглядит в моём макросе Макрос1(имя тоже другое уникальное)
[vba]
Код
With Workbooks("книга2.xls").Worksheets("лист3") .Activate Call Application.Run(макрос2) Application.Wait Time:=Now + TimeSerial(0, 0, 1) End With
[/vba]
UPD. Подправил Книга1 на Книга2.
Макрос2 имеет уникальное имя. Повториться не может. Это я его здесь на форуме так обозвал для наглядности. Вообще он в той книге Книга2 имеет имя на русском языке. Может дело в этом?
По поводу активации и thisbook. Вот так это выглядит в моём макросе Макрос1(имя тоже другое уникальное)
[vba]
Код
With Workbooks("книга2.xls").Worksheets("лист3") .Activate Call Application.Run(макрос2) Application.Wait Time:=Now + TimeSerial(0, 0, 1) End With
Тот файл Книга2 написан не мой. Кода там несколько сотен страниц. Вникать как там что устроено нет ни возможности ни желания. Думаю что ни вам ни мне. Но он работает и это главное. Единственное что написан он очень давно. Когда ещё не было расширений XLSM. Сохранён он в формате XLS. И только в таком виде он может существовать. При попытке сохранить в другом формате (xlsm) макрос перестаёт работать.
Мне надо просто открывать этот файл, запихивать туда данные и запускать макрос на обработку этих данных. С первыми двумя пунктами проблем нет. А вот макрос почему-то не подцепляется.
Коды пока выложить не могу. Мой который я пишу ещё очень сыроват.
Тот файл Книга2 написан не мой. Кода там несколько сотен страниц. Вникать как там что устроено нет ни возможности ни желания. Думаю что ни вам ни мне. Но он работает и это главное. Единственное что написан он очень давно. Когда ещё не было расширений XLSM. Сохранён он в формате XLS. И только в таком виде он может существовать. При попытке сохранить в другом формате (xlsm) макрос перестаёт работать.
Мне надо просто открывать этот файл, запихивать туда данные и запускать макрос на обработку этих данных. С первыми двумя пунктами проблем нет. А вот макрос почему-то не подцепляется.
Коды пока выложить не могу. Мой который я пишу ещё очень сыроват.fairylive
Manyasha, так вот зачем эти апострофы))) Но всё же нет. Имя файла в одно слово. Я в предыдущем сообщении возможно не верно выразился на счет того что макрос не подцепляется. По началу было сообщение с ошибкой что макрос не удаётся выполнить или найти. Потом это сообщение пропало и вроде бы как макрос запускается. На это указывает тот момент что в экселе в файле книга2 меняется лист (он менялся как раз после выполнения макроса2). Но лист пустой. Нет результата сейчас.
Manyasha, так вот зачем эти апострофы))) Но всё же нет. Имя файла в одно слово. Я в предыдущем сообщении возможно не верно выразился на счет того что макрос не подцепляется. По началу было сообщение с ошибкой что макрос не удаётся выполнить или найти. Потом это сообщение пропало и вроде бы как макрос запускается. На это указывает тот момент что в экселе в файле книга2 меняется лист (он менялся как раз после выполнения макроса2). Но лист пустой. Нет результата сейчас.fairylive
_Boroda_, виноват-с, невнимательность моя. Теперь вижу что tt это имя процедуры в модуле module1. До этого думал может это какое-то расширение модуля внутри файла xlsx...
_Boroda_, виноват-с, невнимательность моя. Теперь вижу что tt это имя процедуры в модуле module1. До этого думал может это какое-то расширение модуля внутри файла xlsx...fairylive