Страницы: 1
RSS
Вызов процедуры или формы из другой книги
 
Доброго времени суток!!!
Не могу понять как вызывать процедуру из другого проекта. Пусть нужно вызвать процедуру "тест" из модуля "пример" из книги "Вопрос". Напишите, пожалуйста, пример или дайте ссылку на нормальное описание.
 
application.run - оно?
 
Пример, если файл, в котором нужно запустить макрос, открыт:
Код
Sub Макрос1()
    Application.Run Macro:="'Книга1.xlsm'!Module1.Макрос"
End Sub

Пример, если файл в котором нужно запустить макрос, закрыт.
Прежде чем макрос будет запущен, откроется файл, поэтому потом может потребоваться закрыть файл.
Код
Sub Макрос2()
    Application.Run Macro:="'C:\Users\User\Desktop\Книга1.xlsm'!Module1.Макрос"
    Workbooks("Книга1.xlsm").Close
End Sub
 
Спасибо. А из одной книги реально работать с формой, которая находится в другой книге?
Изменено: Сергей Беляев - 10.07.2016 15:05:25
 
На первый взгляд у Вас неправильно организованы макросы. Может быть Вам нужно сделать надстройку или поместить макросы в Личную книгу макросов и оттуда уже запускать макросы.
 
Возможно, но я не для себя их пишу. А пользователи не будут ставить надстройки. Хотя, если установить надстройку макросом, чтобы пользователь и не знал, то думаю все получится.
 
Сделайте excel надстройку, она подключается через пользовательский интерфейс: Файл - Параметры - Надстройки - Управление - Надстройки Excel - Перейти - Обзор - пользователь выбирает надстройку (это файл с расширением xlam) - OK. И после этого макросы всегда будут доступны для любого Excel файла.
 
Цитата
Karataev написал: пользователь выбирает надстройку
Я не могу пользователя заставить что-то выбирать. Он хочет открыть книгу и получить результат. Десятки пользователей, компьютеров в 3 раза больше.
Я могу все это и скриптом сделать, вопрос в самой возможности обращения к форме из другой книги. Если есть форма, то значит она существует как объект. Не могу понять только как к ней обратиться.
Изменено: Сергей Беляев - 10.07.2016 15:55:17
 
Цитата
Сергей Беляев написал:  Он хочет открыть книгу и получить результат
Поместите тогда форму в этот открываемый файл )
 
Тогда мне проще сказать пользователям, что нельзя сделать как они хотят :)
 
Ну а форму вызвать из другой книги Вы ведь сможете? Тогда в чём проблема?
 
А как вызвать форму из надстройки.
Например есть надстройка в которой есть форма усерформ1. И есть книга в который при определённом действии (двойной клик по ячейке, ввод данных в какую либо ячейку и т.д.) должна жта форма вызываться.
Код
userform1.Show
естесно не работает.
Может нужно использовать
Код
Application.Run Macro:=
?
 
в этой же надстройке создайте модуль с процедурой запуска надстройки
Код
Sub пуск()
userform1.Show
End Sub
а её уже зовите откуда угодно
Код
Application.Run Macro:="'C:\полный_путь_в_апострофах'!модуль.пуск"
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik,
Спасибо, то что нужно.
И ещё небольшой оффтоп, возможно ли как нибудь использовать именнованные диапазоны хранящиеся на листе надстройки?
 
Цитата
Kulibinslovoru написал:
возможно ли
возможно
Код
=ВПР(A11;'123.xlam'!Таблица[#Данные];2;)
Код
=СЧЁТЗ('123.xlam'!имена)
и т.д. но это уже другая тема
Соблюдение правил форума не освобождает от модераторского произвола
Страницы: 1
Читают тему
Наверх