All Forums
 Категория Visio
 Форум Вопросы и ответы
 Св-ва чужой страницы.
Author Previous Topic Topic Next Topic  

GDK

Russia
90 Posts

Posted - 11/26/2010 :  08:22:04
Возникла проблема: не получается добраться до ячеек шейплиста страницы, которая имеется в документе.
Короче есть шейп на странице 3, надо в ячейку User.value забить ф-лу, которая покажет, например, ширину страницы №2. Как это сделать? Второй день не соображу и в SDK не нахожу примеров. Пробовал так =pages[2]!pagewidth - не вводится, а выдаёт ошибку, при этом thepage!pagewidth работает.
И попутно вопросик - можно ли обратиться к ячейам шейп-листа фигуры, находящейся на другой странице?

Tumanov

Russia
1198 Posts

Posted - 11/26/2010 :  16:24:19
Нужно писать примерно так: =Pages[Page-2]!ThePage!PageWidth
К шейпам на той странице тоже обращаться можно (но осторожно). Подробнее обсуждалось здесь
topic.asp@TOPIC_ID=143.html
Go to Top of Page

GDK

Russia
90 Posts

Posted - 11/29/2010 :  06:14:23
=Pages[Page-2]!ThePage!PageWidth
получилось. Только с кое-какими трудностями. Дело в том что нужный лист при создании был назван “ABB”. Затем переименован в “Лист2", документ сохранён, открыт и на третьем листе создан шейп, в который я ввёл формулу =Pages[Лист2]!ThePage!PageWidth. Эту формулу визио посчитала ошибкой. Ну тогда я ввёл =Pages[ABB]!ThePage!PageWidth (название листа не менял – осталось «Лист2»). Эту формулу визио приняла и выдала правильный результат.
Так что и впрямь «осторожно». Причём в SDK этого нет. Может в FAQ вбить эту особенность? Ну и после этого появляется вопрос: Как же узнать какое имя листа вписывать в подобные формулы?

Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 11/29/2010 :  16:02:56
Это скорее всего тот эффект, который появился где-то в районе 2000-2002 версий, когда локальные имена разбежались от универсальных.
Когда странице дается имя впервые, локальное и универсальное имена совпадают. Это у Вас было ABB.
Потом, при ручном переименовании локальное имя меняется, а универсальное остается неизменным. Объясняют это стремлением сделать так, чтобы локализация не влияла на работу программ.
Однако, теперь получается так, что пользователь видит одно, а программа другое :)
Локальное имя у Вас стало "Лист2", а программа (и формула) обращаются по ABB.
Go to Top of Page

GDK

Russia
90 Posts

Posted - 12/03/2010 :  12:49:03
Ну пусть так - Microsoft всегда права. Но всё же как узнать универсальное имя листа? Оно ведь должно быть связано с глобальным как нибудь.
Ну вот забыл первоначальное или кто-то другой файлик делать начал, переименовал и всё приехали. Неужели делать новый файл?

Edited by - GDK on 12/03/2010 12:50:12
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 12/03/2010 :  16:24:36
А макросом :)
Sub ttt()
    For i = 1 To ActiveDocument.Pages.Count
    Debug.Print ActiveDocument.Pages(i).Name, ActiveDocument.Pages(i).NameU
    Next
End Sub

------------------
Вот я добавил страничку aaa, потом переименовал ее в bbb. Первая осталась неизменной.
Page-1        Page-1
bbb           aaa

-----------------
Второй вариант - сохранить в XML, найти текстовым редактором "<Page ID=". Тогда увидим примерно такой текст:
"<Page ID='4' NameU='aaa' Name='bbb'"
Go to Top of Page

GDK

Russia
90 Posts

Posted - 12/06/2010 :  09:41:55
Значит только макросом или c помощью XML. Это стоит внести в FAQ. Ну хоть так.
Go to Top of Page

GDK

Russia
90 Posts

Posted - 02/21/2013 :  09:41:17
В Visio 2007 не устранено.
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)