Иногда по долгу службы™ возникает ситуация когда нужно получить значение из ячейки в другой фигуре (в том числе на другом листе), ячейки в свойствах страницы или документа. В случаях с другой фигурой или другой страницей возникает путаница обусловленная "проблемой локальных и универсальных имен".
The local name is a friendly name that is displayed in the Visio user interface. For Visio’s own content, this is a string translated for the product sku of Visio (i.e. German strings in German Visio). Users have the ability to rename Page and Master and Cell objects, and that changes the local name. Local names allow users to see things in a language that makes sense to them.
The universal name is hidden from the user interface and can only be updated through automation. This keeps a universal name consistent across product versions and user edits. A constant name allows solution developers to refer to objects by an identifier that makes sense to them. This identifier works no matter what is displayed for the local name.
Подробнее… На нашем форуме эта проблема уже обсуждалась, см. обсуждение
здесь и
начиная отсюдаВ одной из книг по VBA в Excel мне встретился способ "Программирование с помощью в окна Immediate"
Спасибо
Digitall™ (автор проектов prodigitall.narod.ru [сайт функционирует, но на нем завелись не хорошие скрипты -
копия сайта], ovisio.ru [сайт прекратил свое существование в 2016 году]) за помощь в написании мануала
Digitall™ в Skype писал(а):
Понял как работает. Но дико нетривиально!
1. Открываем редактор VBA из Визио. Это важно.
2. Открываем в нем окно Immediate.
3. Копируем заготовку (содержимое из столбца C) в соответствующей строке на соответствующем листе книги excel.
4. Выделаем первую фигуру (ссылочную) в Визио.
5. Вставляем заготовку в окно Immediate, ставим курсор в конец заготовки и нажимаем ↵ Enter. Ниже заготовки появится вторая строка с нужной формулой.
6. Выделяем в Визио вторую фигуру (целевую).
7. В окне Immediate ставим курсор в конец второй строки (в конце формулы) и нажимаем ↵ Enter.
Вложение:
Дополнение:
VBA snippet
Содержимое спрятано под спойлер ↓1. Выделите интересующий шейп
2. Нажмите
Alt+
F113. Если VBA не открыто окно
Immediate Window, нажмите
Ctrl+
G 4. В окне
Immediate Window вставьте код
Код:
?"Pages[" & ActiveWindow.Selection(1).Parent & "]!sheet." & ActiveWindow.Selection(1).ID
Profit: во второй строке
Immediate Window получите полную ссылку на интересующий шейп
Profit: во второй строке
Immediate Window получите полную ссылку на интересующий шейп