doctorraz Posted July 1, 2021 Report Share Posted July 1, 2021 (edited) При обработке именованных ячеек, споткнулся об грабельки. Properties объектов СПДС имеют Names обращаясь к которым можно получать свойства Спойлер Это все красиво работает для стандартных и прочих объектов. У ячейки таблицы есть Properties : Names которое задается, как комментарий ячейки. Спойлер Sub ГраблиСименем() Set SPDS = CreateObject("McCOM2.Server") 'Получаем COM-сервер СПДС TabName = "1" 'эту таблицу будем искать на чертеже Set FindTable = SPDS.Query("McCom2.SymTable", "Name=""" & TabName & """") 'ищем таблицу If FindTable.Count > 0 Then 'если хоть одна таблица с таким именем найдена Set PropTable = FindTable(1).Properties 'хватаем первую из коллекции с таким именем (предполагается, что она одна))) End If Set rrr = PropTable("Составное имя") Set rrr2 = PropTable!Имя On Error Resume Next 'тут затык Set rrr3 = PropTable("111") If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Пока комментарий текст, к этому свойству можно обратиться, но если комментарий число, возникает исключение: Index is an interger number from 1 upto Count. Собственно вопрос: как это обойти/объехать? Получить свойство с Names integer PS кстати, кто такой interger ? Баг с именем интегер.dwg Edited July 1, 2021 by doctorraz 2 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted July 1, 2021 Author Report Share Posted July 1, 2021 Кажется понял, где собака порылась.. когда передаешь имя свойства, а оно число, то СОМ считает, что это индекс свойства и если свойство с таким индексом есть, возвращает свойство по индексу если число больше, чем количество свойств, то формирует исключение.. Не уверен, что это так задумано((( 1 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted July 2, 2021 Author Report Share Posted July 2, 2021 (edited) Короче переделал я цикл с Names на item Эти грабельки обошел, один фих проходить по всем свойствам, без разницы,как проход делать, но вопрос с произвольной трактовкой нанодвижком , обращения к свойству объекта СПДС остался.. sName="Имя" 'вернет по имени sName="11" ' вернет по индексу если такой есть, иначе экцепшн Set rrr = PropTable(sName) если string но внутри число, то нано считает, что это индекс, если внутри текста текст, то нано считает, что это имя свойства Цитата Пусть разработчики смотрят, если это их заинтересует.© Edited July 2, 2021 by doctorraz 2 Quote Link to comment Share on other sites More sharing options...
sea Posted July 2, 2021 Report Share Posted July 2, 2021 Число трактуется как индекс свойства в наборе. Так и задумано. Лучше не использовать чисто числовые имена. Опечатку с "interger" поправили. 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.