Author |
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 |
|
|
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 вбить эту особенность? Ну и после этого появляется вопрос: Как же узнать какое имя листа вписывать в подобные формулы?
|
|
|
Tumanov
Russia
1198 Posts |
Posted - 11/29/2010 : 16:02:56
|
Это скорее всего тот эффект, который появился где-то в районе 2000-2002 версий, когда локальные имена разбежались от универсальных. Когда странице дается имя впервые, локальное и универсальное имена совпадают. Это у Вас было ABB. Потом, при ручном переименовании локальное имя меняется, а универсальное остается неизменным. Объясняют это стремлением сделать так, чтобы локализация не влияла на работу программ. Однако, теперь получается так, что пользователь видит одно, а программа другое :) Локальное имя у Вас стало "Лист2", а программа (и формула) обращаются по ABB.
|
|
|
GDK
Russia
90 Posts |
Posted - 12/03/2010 : 12:49:03
|
Ну пусть так - Microsoft всегда права. Но всё же как узнать универсальное имя листа? Оно ведь должно быть связано с глобальным как нибудь. Ну вот забыл первоначальное или кто-то другой файлик делать начал, переименовал и всё приехали. Неужели делать новый файл?
|
Edited by - GDK on 12/03/2010 12:50:12 |
|
|
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'" |
|
|
GDK
Russia
90 Posts |
Posted - 12/06/2010 : 09:41:55
|
Значит только макросом или c помощью XML. Это стоит внести в FAQ. Ну хоть так. |
|
|
GDK
Russia
90 Posts |
Posted - 02/21/2013 : 09:41:17
|
В Visio 2007 не устранено. |
|
|
|
Topic |
|