Bill17 писал(а):
Подскажите как можно определить что выделенный шейп - контейнер?
я бы определял по наличию ячейки, например User.msvStructureType, ну и ее содержимое ="Container"
Bill17 писал(а):
Если на диаграмме есть вложенные контейнеры, как можно получить самый верхний?
тут сложнее. я не нашел прямой способ. но можно рассмотреть ячейку Relationships, взять влияющие на нее ячейки:
Shape.Cells("Relationships").Precedents
возвращается массив зависимостей в виде ссылок на ячейки.
взять первый элемент массива, узнать его шейп Cell.Shape
это - основной контейнер (вот тут не уверен, что самый верхний контейнер всегда на первой позиции, но у меня было именно так).