|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
29.12.2017, 12:41 | #1 | |
VBA. Можно ли (Как) из объекта-примитива узнать пространство (имя листа), в котором он создан?
Инженер
С-Пб
Регистрация: 02.10.2008
Сообщений: 3,686
|
||
Просмотров: 7757
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855
|
Попробуй посмотреть свойство OwnerID и потом преобразовывай его в указатель на пространство (насколько я помню, ObjectIDToObject - но там были возможны варианты: в некоторых версиях требовалось ObjectIDToObject, в некоторых - ObjectIDToObject32).
----- добавлено через ~11 мин. ----- P.S. VBA у меня сходит с ума при попытке выбора объекта, так что Код:
Обрати внимание - в 2013 используются OwnerID32 и ObjectIdToObject32. В других версиях может быть по-другому (а сделать универсальные коды в VBA, по-моему, не получится).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
Цитата:
..А вот при попытке из Экселя этот финт ушами провернуть - эксель вылетает. Может, потому, что конфликт идет между типами (в excel вроде нету LongLong?).
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Последний раз редактировалось Сергей812, 29.12.2017 в 16:15. |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
Цитата:
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
Цитата:
А строчка закомментирована не просто как?
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
Да я понял, что для разных вариантов акада.. Но, повторюсь, при использование lSelAcadObj.OwnerID в связке эксель - А2016 эксель мрёт..
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
OwnerID32 в А2016 отсутствует в списке свойств..
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
|
||||
Регистрация: 18.12.2010
Сообщений: 5,057
|
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
а ObjectIDToObject и ObjectIDToObject32 присутствуют? Если да - пробуйте с ними OwnerID по очереди. Заодно посмотрите в отладчике перед вызовом этих функций - есть ли вообще что-то удобоваримое в этом OwnerID. Ну и контрольный вопрос - все обновления установлены?
|
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
Цитата:
по ссылке из #12: Цитата:
Кстати сказать, при работе Excel2016 с A2012 и использовании lSelAcadObj.OwnerID32 - тоже вылет экселя.. ...А, блин, эксель у меня 32 битный, вот он и не может скушать автокадовский указатель на тип LongLong.. И как его можно экселю скормить?
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! Последний раз редактировалось AlexV, 09.01.2018 в 14:31. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Ну с VBA (правда самого акадовского) я очень быстро свалил в сторону Interop на VB.NET из-за каких то постоянных ограничений и спонтанных ошибок. Синтаксис по сути один и тот же с VBA - надо только уговорить админа поставить бесплатную студию какую-нибудь с поддержкой VB.NET. Ну или в тот же .Net уходить сразу, не приходя в сознание)
|
|||
|
||||
Цитата:
Код:
__________________
Мастерская СПДС |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855
|
Проблема именно тут. Может быть ObjectIdToObject, а может быть и ObjectIdToObject32. И что оно потребует - тайна
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
Да все так, проблема в том, что мне надо автокадовское (A2016 64b) свойство OwnerID, коее имеет тип данных LongLong, выцепить через vba excel, который у меня 32-битный и тип LongLong не поддерживает, вследствие чего умирает при попытке прочитать returnObj.OwnerID..
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
|
||||
vb6 же х-32??
если объект получен GetEntity, то OwnerID ошибка, OwnerID32 то же а если SelectOnScreen , все работает.. Код:
__________________
Мастерская СПДС |
||||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Autodesk Navisworks Manage 2017 - как узнать объём объекта? | jzgte-2 | Прочее ПО от Autodesk | 0 | 09.10.2017 23:32 |
Можно ли выбрать объект модели из листа не активируя видовой экран? | mkung | Программирование | 24 | 25.06.2014 09:31 |
Ошибка при экспортировании листа в пространство модели в ASD 2011 | moongerm | Вертикальные решения на базе AutoCAD | 3 | 11.03.2011 12:07 |
Каким образом можно выкупить стройматериалы с объекта долгостроя | Stitch | Разное | 12 | 15.04.2010 09:36 |
Как можно открыть чертеж через LISP на котором стоит пароль? | ivspec | LISP | 7 | 10.02.2006 17:36 |