Абсолютно дурацкий вопрос, но времени на поиск ответа нет, результат нужен вчера.
Не программировал на vba 10 000 лет и всё, абсолютно всё забыл, хотя когда-то неплохо зажигал.
Разместил кнопку на листе документа xls, сделал обработчик нажатия кнопки, хочу из обработчика вызвать макрос, локализованный в "ЭтаКнига". Но не знаю как.
Здравствуйте, Molchalnik, Вы писали:
M>Абсолютно дурацкий вопрос, но времени на поиск ответа нет, результат нужен вчера. M>Не программировал на vba 10 000 лет и всё, абсолютно всё забыл, хотя когда-то неплохо зажигал. M>Разместил кнопку на листе документа xls, сделал обработчик нажатия кнопки, хочу из обработчика вызвать макрос, локализованный в "ЭтаКнига". Но не знаю как.
Здравствуйте, Vi2, Вы писали:
Vi2>Здравствуйте, Molchalnik, Вы писали:
M>>Абсолютно дурацкий вопрос, но времени на поиск ответа нет, результат нужен вчера. M>>Не программировал на vba 10 000 лет и всё, абсолютно всё забыл, хотя когда-то неплохо зажигал. M>>Разместил кнопку на листе документа xls, сделал обработчик нажатия кнопки, хочу из обработчика вызвать макрос, локализованный в "ЭтаКнига". Но не знаю как.
Vi2>ЭтаКнига.ЭтогоМакросаИмя ЭтогоМакросаПараметры
кстати, работает, но я старой школы и очень против русификации кода. Динозавр, что делать, это не лечится. А почему не работает ThisWorkBook.ЭтогоМакросаИмя?
Здравствуйте, Molchalnik, Вы писали:
M>кстати, работает, но я старой школы и очень против русификации кода. Динозавр, что делать, это не лечится. А почему не работает ThisWorkBook.ЭтогоМакросаИмя?
Я написал чисто псевдокод, совмещая текст и код. Даже удивительно, что так работает.
Наверное, VBА Ворда объявляет переменную для пользователя и, похоже, с учётом локализации, но никто не мешает тебе самому дообъявить ещё одну переменную, например, Set ThisWorkBook = ЭтаКнига.
PS
Мда, забыл объявить Dim ThisWorkBook As WorkBook, но это и не нужно. Вообще проверил сейчас: есть и ThisWorkBook как метод класса Global, т.е. доступен без указания чего-то перед этим именем, есть и ЭтаКнига.
Vi2>Мда, забыл объявить Dim ThisWorkBook As WorkBook, но это и не нужно. Вообще проверил сейчас: есть и ThisWorkBook как метод класса Global, т.е. доступен без указания чего-то перед этим именем, есть и ЭтаКнига.
Cпасибо, у меня это так и работает. Видимо, когда я пытался сделать это в первый раз, я сделал что-то не так — возможно, вызываемый макрос объявил Private.
Теперь мучаюсь, почему Application.Run("ЭтаКнига.ИмяМакроса",arg1) работает, а Application.Run("ThisWorkbook.ИмяМакроса",arg1) нет