Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Inglik
2 / 1 / 1
Регистрация: 11.04.2019
Сообщений: 23
1

Вызов надстройки в файле шаблона

11.04.2019, 18:13. Просмотров 284. Ответов 9

Помогите, пожалуйста.
Худо-бедно создала макрос.
Суть следующая. В файле Excel есть несколько листов:
1) Справочник. Содержит эл.адреса.
2) Рабочие листы. При нажатии на кнопку надстройки создается новый лист на основе Шаблона (далее - Рабочий лист).
В рабочем листе в коде прописала вызов макроса "Автозамена":
Visual Basic
1
2
3
4
5
6
7
8
Private Sub Worksheet_Change(ByVal Target As Range)
  tc = Target.Column
  tr = Target.Row
  If tc = 5 And tr > 12 Then
   Cells(tr, tc).Activate
   Call Автозамена
   End If
End Sub
Что происходит - в столбце Е вписанное слово "Контора1" меняется на эл.адрес "Contora1@mail.ru", который хранится в Справочнике.
Далее.
Вписала этот код в файл Шаблона.
Все работает ровно до тех пор, пока процедура Автозамена написана в самой книге. Как только очищаю книгу от модулей и данный макрос (Автозамена) переношу в модуль надстройки, при создании нового листа из Шаблона всплывает ошибка (Обращение к неизвестной процедуре).
1) Как исправить ошибку?
2) Как обратиться к макросу надстройки?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2019, 18:13
Ответы с готовыми решениями:

Вызов окна функции из надстройки
Добрый день. Сделал надстройку типа RIBBON. В меню перечислил свои пользовательские функции. Хочу,...

Вызов надстройки через VBA
Здравствуйте. Очень нужна Ваша помощь. Задача следующая: В VBA для Excel 2003 необходимо...

Вызов функции (шаблона)
Здравствуйте. Есть шаблон, никак не получаются его вызвать. template <class T> void print(const T...

Вызов tpl шаблона
Добрый день, у меня как кажется елементарный вопрос, но тем ни менее ответ найти я не могу У меня...

Groovy - Вызов в файле метода описанного в другом файле
Вот код загрузки файла в Groovy взятый из книги Башар Абдул-Джавада ... (с небольшой правкой)...

9
pashulka
3194 / 1702 / 717
Регистрация: 01.12.2010
Сообщений: 3,406
11.04.2019, 18:26 2
Visual Basic
1
Run "Имя_надстройки.xla!Автозамена"
Обратите внимание на то, что в новых версиях, расширение у надстроек уже .xlam
0
Казанский
14904 / 6307 / 1719
Регистрация: 24.09.2011
Сообщений: 9,977
11.04.2019, 18:29 3
Цитата Сообщение от Inglik Посмотреть сообщение
вписанное слово "Контора1" меняется на эл.адрес "Contora1@mail.ru"
1. Это можно сделать без макросов: Параметры - Правописание - Параметра автозамены...
2. Макрос Автозамена можно вызвать с помощью Run "Автозамена"
0
Inglik
2 / 1 / 1
Регистрация: 11.04.2019
Сообщений: 23
11.04.2019, 19:15  [ТС] 4
Казанский, данный макрос не выполняет автозамену как таковую, он ищет в справочнике данные и заполняет три столбца, и только один из них меняется.

Run не работает.

Добавлено через 10 минут
pashulka,
не помогает. Ошибку не выдает, но и ничего не делает.
0
11.04.2019, 19:15
Казанский
14904 / 6307 / 1719
Регистрация: 24.09.2011
Сообщений: 9,977
11.04.2019, 19:16 5
Цитата Сообщение от Inglik Посмотреть сообщение
Run не работает
Странно. ТОгда сделайте как тут: Нет доступа к Public Function, расположенной в модуле .XLAM
0
pashulka
3194 / 1702 / 717
Регистрация: 01.12.2010
Сообщений: 3,406
11.04.2019, 19:42 6
Inglik, Если ошибка не возникает, значит макрос вызывается. А почему не происходит замена, можно только гадать и предполагать, ведь кода не видно.
0
Inglik
2 / 1 / 1
Регистрация: 11.04.2019
Сообщений: 23
11.04.2019, 20:08  [ТС] 7
Все же подозреваю, что я неправильно вызываю макрос.
Есть возможность вызвать макрос надстройки, указав ее полный путь хранения?
0
pashulka
3194 / 1702 / 717
Регистрация: 01.12.2010
Сообщений: 3,406
11.04.2019, 20:14 8
Зачем гадать, добавьте (временно) в макрос Автозамена Stop или MsgBox "Ok" и увидите, вызывается он или нет
1
Inglik
2 / 1 / 1
Регистрация: 11.04.2019
Сообщений: 23
11.04.2019, 22:04  [ТС] 9
Нашла ошибку.
Когда Макрос записан в Модуле Книги, он выполняется (переменные не запрашивает).
Когда перемещаю в Модуль Надстройки, ему требуются переменные.
В итоге добавила 2 переменные, заработал, только некорректно - запускается, когда покидаешь ячейку (причем, нажимая на стрелку вверх после введения данных, т.е., получается, нужно ввести слово, покинуть ячейку и вернуться в нее.), ну и после запуска уходит в цикл
Visual Basic
1
Run "Имя_надстройки.xla!Автозамена", rw, cl
Добавлено через 5 минут
pashulka,
так и сделала, не работал. Спасибо за подсказку.
0
Inglik
2 / 1 / 1
Регистрация: 11.04.2019
Сообщений: 23
12.04.2019, 05:03  [ТС] 10
Шутка юмора: переименовала имя макроса и имя надстройки на латиницу. Заработало.
0
12.04.2019, 05:03
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2019, 05:03

В каком файле шаблона находятся посты
Подскажите пожалуйста, вот есть сайт на wordpress , в каком файле шаблона в вордпресе, хранятся...

Поиск шаблона в файле под Unix
помогите написать(или вдруг у кого есть) программу с использованием системных вызовов,...

Деструктор шаблона описанный в отдельном файле не линкуется. Почему?
Есть такой код: файл "a.h" #include <iostream> template < typename T> class A { public:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru