| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Способы назначения VBA макроса на кнопку

Способы назначения VBA макроса на кнопку

Ответ
Поиск в этой теме
Непрочитано 22.09.2016, 08:46 #1
Способы назначения VBA макроса на кнопку
krok64
 
Л, ТХ
 
Ухта
Регистрация: 01.06.2016
Сообщений: 38

Я знаю пару способов повесить макрос на кнопку, но ни один меня не устраивает.
Первый способ
Код:
[Выделить все]
^C^C_vbarun MyVBAFunc
имеет проблему в том что его нельзя повторить как последнюю команду.
Второй способ
Код:
[Выделить все]
^C^C(defun c:A() (command "_vbarun" "MtextToExcel")) A
устраняет предыдущую проблему, но слишком многословен. А каким способом пользуетесь вы?
Просмотров: 3820
 
Непрочитано 22.09.2016, 08:48
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Offtop: Не пользуемся VBA
Создай отдельный lsp, в котором пропиши вызов своих процедур, обеспечь его автозагрузку - и все.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.09.2016, 09:08
#3
krok64

Л, ТХ
 
Регистрация: 01.06.2016
Ухта
Сообщений: 38


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Создай отдельный lsp, в котором пропиши вызов своих процедур, обеспечь его автозагрузку - и все.
У меня на данный момент так и сделано. Проблема в том что когда этих функций много (больше 60 на данный момент) тяжело синхронизировать их название/наличие одновременно в файле с макросами VBA и в файле lsp.
krok64 вне форума  
 
Непрочитано 22.09.2016, 09:15
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Выкрутиться можно, было бы желание.
Вариант 1: создать сторонний текстовый файл, в котором соотнести имя команды, полный путь до DVB, имя процедуры. Лиспом или VBA-шной же процедурой, выполняемой при загрузке, выполнять его чтение и назначать соответствующие команды.
Вариант 2: плюнуть на VBA и перейти на .NET

----- добавлено через 19 сек. -----
Наверняка есть вариант 3, 4, 163...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.09.2016, 09:45
#5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Вариант 1: создать сторонний текстовый файл, в котором соотнести имя команды, полный путь до DVB, имя процедуры. Лиспом или VBA-шной же процедурой, выполняемой при загрузке, выполнять его чтение и назначать соответствующие команды.
дополнение: экспортировать код из редактора VBA (заодно и резервная копия будет), а потом пропарсить полученный текстовой файл, получая "сторонний текстовый файл, в котором соотнести имя команды, полный путь до DVB, имя процедуры".
Сергей812 вне форума  
 
Непрочитано 22.09.2016, 14:31
#6
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


удалил


ЗЫ.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
дополнение: экспортировать код из редактора VBA (заодно и резервная копия будет), а потом пропарсить полученный текстовой файл, получая "сторонний текстовый файл, в котором соотнести имя команды, полный путь до DVB, имя процедуры".
или сразу перейти на .NET и не мучатся =о)
Boxa вне форума  
 
Непрочитано 22.09.2016, 17:51
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Boxa Посмотреть сообщение
или сразу перейти на .NET и не мучатся =о)
ну если по нормальному - то да (хотя VBA тоже пользуюсь для простеньких программ, размещаемых в Excel файлах). Но если у людей уже более 60 макросов в VBA сделано, то найти код на NETAPI/переписать с отладкой займет достаточно времени - да и вполне вероятно, что автор макросов уже и не работает в фирме)

А чего сложно в парсинге? Стандартной командой в редакторе VBA экспортируешь файл из VBA проекта в текстовой файл *.bas, а потом построчно читаешь, ища сигнатуру начала команды.
Сергей812 вне форума  
 
Непрочитано 22.09.2016, 18:01
#8
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
дополнение: экспортировать код из редактора VBA (заодно и резервная копия будет), а потом пропарсить полученный текстовой файл, получая "сторонний текстовый файл, в котором соотнести имя команды, полный путь до DVB, имя процедуры".
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
А чего сложно в парсинге? Стандартной командой в редакторе VBA экспортируешь файл из VBA проекта в текстовой файл *.bas, а потом построчно читаешь, ища сигнатуру начала команды.
Если бы делал для себя, то дописал бы в начало VBA программки процедуру, которая регистрировала бы команду или дописывала нужное в lsp файл... а парсить, это и забыть можно и муторно
Boxa вне форума  
 
Непрочитано 22.09.2016, 20:29
#9
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Чего то уже не помню по VBA непосредственно в акаде - там же есть автозагрузка в акаде, куда можно поместить и файл проекта VBA. Разве при этом зарегистрированные в проекте VBA команды не становятся автоматически доступны?
Сергей812 вне форума  
 
Непрочитано 22.09.2016, 21:07
#10
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


они не регистрируются как команды, приходится огород городить
Код:
[Выделить все]
 ^C^C(defun c:A() (command "_vbarun" "MtextToExcel")) A
trir вне форума  
 
Непрочитано 22.09.2016, 23:33
#11
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Boxa Посмотреть сообщение
Если бы делал для себя, то дописал бы в начало VBA программки процедуру, которая регистрировала бы команду или дописывала нужное в lsp файл...
Тогда, наверно, проще так. Тут нашел в инете, что можно в VBA проекте создать метод Public Sub AcadStartup(), который будет автоматически запускаться при загрузке проекта в акад. А в этом методе прописать формирование lsp с регистрацией команд.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Способы назначения VBA макроса на кнопку

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно повесить лисп программу на кнопку Нитонисе LISP 32 16.06.2021 13:18
Машинное помещение лифтов и помещение общественного назначения АВВ Архитектура 48 14.03.2016 15:30
Каким документом пользоваться при проектировании: Административные и бытовые здания или Общественные здания административного назначения vlasctelin Архитектура 7 15.10.2014 13:12
Как перемещение колёсиком на мышке перенести на клавиатуру на кнопку?? Mixon2010 AutoCAD 43 25.06.2013 22:26
Открывание и закрывание панелей иснтрументов с помощью макроса dextron3 Программирование 4 03.01.2008 15:46