Author |
Topic |
|
Dimas
4 Posts |
Posted - 12/27/2003 : 07:04:04
|
Есть созданный мастер-шейп с кучей Custom Properties. Напр., именуемый в шейп-листе как Spec.3 Чтобы извлечь нужное свойство, я пишу в Custom formula: =Spec.3!Prop.XXX. Это работает в пределах страницы Чтобы обратиться к нему с другой страницы, я, ессно, пишу =Pages[Page-X]!Spec.3!Prop.XXX в ответ - Bad ShapeSheet name... интересно, что с не-мастер шейпом, т.е. именуемым Sheet.XX все работает... Где загвоздка? З.Ы. Сорри за столь наивные вопросы по синтаксису, но толкового руководства под рукой нет... может, подскажете, где взять? З.З.Ы. MS Visio 2002 |
|
Tumanov
Russia
1198 Posts |
Posted - 12/27/2003 : 11:26:29
|
Похоже, что здесь в Visio 2002 просто присутствует ошибка. Я, правда, не наталкивался до этого на нее, потому что стараюсь использовать ссылки только вверх или в сторону, но не вверх-вниз, как в данном случае. Вот что я сейчас высмотрел. Помещаем на Page-1 прямоугольник и два шейпа Triangle. Первый из них отзывается на: Sheet.2 Triangle Второй на: Sheet.3 Triangle.3 С первой страницы работают ссылки на Triangle.3!Width и Sheet.3!Width. Причем при попытке ввести ссылку Sheet.3!Width она автоматически заменяется на Triangle.3!Width. То есть Visio так сказать "помогает" пользователю. Даем второму треугольнику еще и уникальное имя, например sh1. Теперь он отзывается на: Sheet.3 sh1 Подмена идет уже на sh1.
Начинаем на него ссылаться с Page-2 и видим, что при вводе =Pages[Page-1]!Sheet.3!Width подмена идет уже на =Pages[Page-1]!Triangle.3!Width, а не на =Pages[Page-1]!sh1!Width, как на первой странице. Эта ссылка еще работает. Но! Повторно ее ввести нельзя! То есть, при попытке самому ввести =Pages[Page-1]!Triangle.3!Width получаешь ошибку. Более того. Если этот файл сохранить не в .vsd, а в .vdx, то Visio уже не может его прочитать. Говорит, что формула сломана и он ее изменяет на 0.
Вывод: 1. Желательно при ссылках в Visio 2002 избегать обратного движения по дереву. То есть, если уж Вы сослались на другую страницу (вверх по дереву), то не опускаться до ее шейпов. 2. Если такая ссылка все-таки нужна, то стараться использовать неименованные шейпы, чтобы Visio не имел возможности "помочь" Вам в духе Microsoft. 3. Проверить, как это работает в Visio 2003. Ошибка настолько явная, что там она вполне может быть уже исправлена.
В общем-то я в этом не совсем уверен, поэтому хотелось бы слышать или подтверждения, или опровержения...
|
|
|
Dimas
4 Posts |
Posted - 12/27/2003 : 11:52:13
|
Все точно так и происходит, как Вы описали... Так что использую неименованные шейпы, что, в общем-то, особого неудобства не представляет... Вообще, работаю с Visio еще с версии 2.0, но, в силу несущественности задач а также природной лени , использовать его не просто как векторный редактор начал только что... Поэтому интересует любая конкретная информация по автоматизации в Visio, а не просто перечисление возможностей... Встроенная справочная система, имхо, оставляет желать лучшего... |
|
|
Digitall
Russia
389 Posts |
Posted - 12/29/2003 : 08:19:47
|
quote: Originally posted by Tumanov
Похоже, что здесь в Visio 2002 просто присутствует ошибка. Вывод: 1. Желательно при ссылках в Visio 2002 избегать обратного движения по дереву. То есть, если уж Вы сослались на другую страницу (вверх по дереву), то не опускаться до ее шейпов. 2. Если такая ссылка все-таки нужна, то стараться использовать неименованные шейпы, чтобы Visio не имел возможности "помочь" Вам в духе Microsoft. 3. Проверить, как это работает в Visio 2003. Ошибка настолько явная, что там она вполне может быть уже исправлена.
В общем-то я в этом не совсем уверен, поэтому хотелось бы слышать или подтверждения, или опровержения...
1) Честно говоря это не ошибка. Ссылка по имени "Shapename.ID!Cellname" работает только в пределах листа! Это явно прописано в DVS.pdf p.74 "Rules for cell references in formulas". 2) В остальных случаях используется "Sheet.ID!Cellname" 3) В Visio 2003 все работает с той же "ошибкой".
Если нет Developing Visio Solutions, то вот ссылка. http://www.math.hcmuns.edu.vn/Public/Soft/WinSoft/Visio2000/Docs/DVS.pdf |
|
|
Tumanov
Russia
1198 Posts |
Posted - 12/29/2003 : 15:13:07
|
Ошибкой я называю ту "помощь", которую пытается оказать Visio, заменяя Sheet.ID на Shapename.ID в том случае, когда эта замена недопустима! То есть пользователь пишет правильную ссылку, Visio заменяет ее на неправильную, а после сохранения отказывается работать с таким документом (через XML). |
|
|
GDK
Russia
90 Posts |
Posted - 11/29/2010 : 07:44:02
|
1) Ссылка по имени "Shapename.ID!Cellname" работает в пределах листа.
2) В остальных случаях используется "Sheet.ID!Cellname" - а у меня почему то это не работает ни в пределах листа, ни с другого листа. А вот 1) при этом действительно работает.
Для того чтобы это обойти надо создавать мастер-шейпы в виде группы, внутри группы фигуры будут иметь имена типа Sheet.ID .
Тоже можно в FAQ.
|
|
|
|
Topic |
|
|
|