Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 23 сен 2019, 21:29

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !



Начать новую тему Ответить на тему  [ Сообщений: 100 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 06 янв 2015, 14:43 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3685
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
можно и без порева с дополнительными окнами

1. Открываем окно редактора VBA клавишами Alt+F11
2. в нем жмем Ctrl+G
3. вставляем в окне Immediate вставляем формулу
Код:
?"ActiveWindow.Selection(1).Cells(" & chr(34) & "WIDTH" & CHR(34) & ").FormulaU = " & chr(34) & "pages[" & Windows(1).Page.NameU & "]!sheet." & Windows(1).Selection(1).ID & "!width" & chr(34)

4. на листе на который хотим сослаться, выделяем шейп.
5. в окне Immediate ставим курсор в конце первой строки и жмем Enter
6. переходим на лист куда хотим вставить ссылку на размер фигуры и выбираем шейп
7. в окне Immediate ставим курсор в конце второй строки и жмем Enter
повторяем шаги 4-7 для всех интересующих фигур


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 04 апр 2019, 12:49 
Не в сети
Постоянный участник

Зарегистрирован: 02 авг 2012, 16:39
Сообщений: 57
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate
Почему то у меня в 2010-м, при определении системного имени страницы, команда ?ActiveWindow.Selection(1).NameU на листе под именем "5" выдаёт ошибку "Недопустимый код выделенного фрагмента". Что я ни так могу выделить не пойму. Просто открываю страницу и ввожу команду. :wall:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 04 апр 2019, 13:28 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 513
Использую Visio c: 2008
Очков репутации: 105

Добавить очки репутацииУменьшить очки репутации
Имя активной страницы извлекается вот так:
Код:
Debug.Print ActivePage.NameU


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 04 апр 2019, 14:41 
Не в сети
Постоянный участник

Зарегистрирован: 02 авг 2012, 16:39
Сообщений: 57
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
совсем необязательно что-то программировать самому и быть дичайшим кодером!
для твоей задачи достаточно.
1. Открыть редактрор VBA нажав Alt+F11
2. В редакторе в окне Immediate (вызывается сочетанием Ctrl+G), это окно
обычно располагается внизу окна.
если хочешь узнать универсальное имя шейпа пишешь в этом окне
Код:
?ActiveWindow.Selection(1).NameU
если хочешь изменить универсальное имя шейпа пишешь в этом окне
Код:
ActiveWindow.Selection(1).NameU = "чё тебе надо"


Меня больше интересует не получить системное имя, а изменить его как в примере Surrogate, т.е.
Код:
ActiveWindow.Selection(1).NameU = "чё тебе надо"

Но как и в первом случае на ActiveWindow.Selection(1).NameU выскакивает ошибка.
Могу приложить гифку.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 04 апр 2019, 14:55 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3685
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
Привет, наткулся сегодня в своем почтовом ящике на твои письма трех летней давности :)
Когда речь идет об окне, то Selection не нужен !!! Окно невозможно выделить, можно только сделать активным !
Код:
ActiveWindow.Page.name = "ololo
ActivePage.name = "Trololo"


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 04 апр 2019, 15:03 
Не в сети
Постоянный участник

Зарегистрирован: 02 авг 2012, 16:39
Сообщений: 57
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Shishok писал(а):
Имя активной страницы извлекается вот так:
Код:
Debug.Print ActivePage.NameU

Спасибо за совет. Вроде разобрался.
Действительно получилось присвоить имя "Деревянный по пояс" при помощи
Код:
Public Sub name_list()
Dim s As String
s = InputBox("Введите желаемое имя листа")
'ActiveWindow.Selection(1).NameU = s ' эта конструкция выдает ошибку
ActivePage.NameU = s ' эта конструкция работает
End Sub

Вышло следующее:
Вложение:
2.gif
2.gif [ 675.11 Кб | Просмотров: 260 ]


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 04 апр 2019, 15:06 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3685
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
Gnomych писал(а):
Но как и в первом случае на ActiveWindow.Selection(1).NameU выскакивает ошибка.
если на странице не выделена ни одна фигура, то да вылетит ошибка. потому что VBA-редактор не может выдать имя выделенной фигуры в данном случае !
vin в сообщении Изучаем Selection писал(а):
Selection – это набор фигур, хотя может быть выбрана и только одна фигура. С помощью этого объекта можно делать различные действия над фигурами: действия над геометрией (объединять, сегментировать, комбинировать, вычитать, обрезать), выравнивать, размещать, вращать, перемещать, сдвигать, отражать, менять начальный и конечные точки, группировать, копировать, вырезать, удалять, соединять, связывать с данными, менять порядок (индекс глубины) – уф, не знаю все ли перечислил. Впечатляет?

Рекомендую почитать !
Дополнено позднее:
Оффтоп:
какое интересное название набора элементов v1_5 :!:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 04 апр 2019, 15:15 
Не в сети
Постоянный участник

Зарегистрирован: 02 авг 2012, 16:39
Сообщений: 57
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
Привет, наткулся сегодня в своем почтовом ящике на твои письма трех летней давности :)
Когда речь идет об окне Selection не нужен !!!
Код:
ActiveWindow.Page.name = "ololo
ActivePage.name = "Trololo"

Спасибо, уже вроде расковырял при помощи знающих людей ;)
За три года много воды утекло, много сделано, от многого пришлось отказаться. Я остановился просто на шаблоне документа. Так проще втолковать как что делать людям совсем не сведущим в вопросах касательно ShapeSheet. Но и тут наткнулся на грабли. Начали переименовывать листы как хотят, летит вся автоматизация по заполнению состава документа. Ну а народ привыкнув ко вкусностям перестал обращать на это внимания и в результате при проверке документов я выявляю кучу ошибок. Когда начинаю разбираться в чём причина всё оказывается весьма тривиально.
Вообще больше склоняюсь к написанию макросов и уходу от шаблона как от такового, но духа не хватает да и знания функций в Визио. Хотя много общего с Экселем.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 04 апр 2019, 15:17 
Не в сети
Постоянный участник

Зарегистрирован: 02 авг 2012, 16:39
Сообщений: 57
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate
Уже актуальна версия 1_7 :D
1_5 начало прошлого года.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 04 апр 2019, 15:21 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3685
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
Gnomych писал(а):
Начали переименовывать листы как хотят, летит вся автоматизация по заполнению состава документа. Ну а народ привыкнув ко вкусностям перестал обращать на это внимания и в результате при проверке документов я выявляю кучу ошибок. Когда начинаю разбираться в чём причина всё оказывается весьма тривиально.
ага, про это вспоминали недавно !
здоровеньки !ну я смог. уже не помню подробностей. помню очень выбешивало применение тем, и то что постоянно вылетала проблема с Name/NameU (т.к. трафарет создавался в англоязычной версии 2003, а в дальнейшем использовался в русскоязычной 2010.
Gnomych писал(а):
Вообще больше склоняюсь к написанию макросов и уходу от шаблона как от такового
ничего не мешает макросом править документ или его


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 04 апр 2019, 15:34 
Не в сети
Постоянный участник

Зарегистрирован: 02 авг 2012, 16:39
Сообщений: 57
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Это совсем другой подход и для его реализации сейчас просто нет времени и полноты знаний. (чаще форум следует посещать и читать документацию :roll: )


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 04 апр 2019, 15:39 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3685
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
вспомнил, делал в свое время такую штуку
Иногда по долгу службы™ возникает ситуация когда нужно получить значение из ячейки в другой фигуре (в том числе на другом листе), ячейки в свойствах страницы или документа. В случаях с другой фигурой или другой страницей возникает путаница обусловленная "проблемой локальных и универсальных имен".
правда похоже мало кто догнал как этим делом пользоваться :wall:

начинать никогда не поздно. а про время могу сказать так: если тебе время от времени надо исправить несколько документов, то да обучение будет дольше и наверно бесполезнее.
а если очень часто и огромное количество документов предстоит править регулярно. то стоит найти время и поучиться !
у меня родилась идейка. как можно обойтись малой кровью, без перехода на программирование для формирования ведомости рабочих чертежей


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 04 апр 2019, 18:06 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3685
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
Surrogate писал(а):
у меня родилась идейка. как можно обойтись малой кровью, без перехода на программирование для формирования ведомости рабочих чертежей
не нифига, не вышло сделать все в shapesheet!
у меня макрос который автоматом правил ведомость был настроен, на фигуры которые применяются в моей конторе начиная с 2016. А то что выложено на форуме, датировано 2009 годом. Многое в потрохах уже поменялось, возможно и ты что-то внутри покоцал? можешь здесь прицепить файлик, в котором будет один лист на нем рамка и ведомость рабочих чертежей.
подготовил видео (прямая ссылка)
phpBB [youtube]

Работает только если рамка бросалась на страницу первой!


Вложения:
Комментарий к файлу: модуль содержащий код, который исправит фигуру "Ведомость рабочих чертежей"
BP4.zip [1000 байт]
Скачиваний: 11
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 05 апр 2019, 10:40 
Не в сети
Постоянный участник

Зарегистрирован: 02 авг 2012, 16:39
Сообщений: 57
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Идея заключалась в другом.
Создать двумерный массив подрядных организаций с наименованием и адресами (дабы это не хранить в списке shapesheet-е), как реализовать что-бы было сразу для всех не знаю, скорее всего нужно подключать какой-то внешний файл (таблицу) в котором оперативно можно вносить изменения затем черпать информацию для вставки в документ из него. При чём это должна быть именно жесткая вставка, а не связь с файлом. Это для титулов.
Потом реализовать авто вставку листов с малой рамкой для описаловки, по принципу: если текст больше размера выделенной под него области на листе, вставляется следующий лист и последующий текст вносится уже на него и т.д. пока идёт описательная часть.
Далее по кнопке вставляется чистый лист с большой рамкой в которую сразу забиваются все константы по проекту и пишется о чем собственно этот лист, если нужен следующий лист с малой рамкой в него берётся информация из рамки предыдущего листа и лист автонумеруется в основной рамке меняется кол-во листов.
Пока все, остальное после реализации этого минимума.

Для начала попробую создать свой Ribbon для меню. Есть у меня одна програмулька которая позволяет это делать Ribbon XML Editor (версия 7.2).
Я в нем делаю свои меню для Excel. Если подойдет для Visio тогда пол дела сделана, хотя есть сомнения т.к. в справке указано следующее:
"Позволяет редактировать ленточный интерфейс основных приложений MS Office. Имеет функцию экспорта и импорта кода интерфейса через файл настроек ленты, поддерживающийся с 2010-й версии офиса. Поддерживает внедрение интерфейса в любые документы или шаблоны Word, Excel, PowerPoint и Access (форматы docm, docx, dotm, dotx, xlsm, xlsx, xlsb, xltm, xltx, xlam, pptm, pptx, potm, potx, ppsm, ppsx, ppam, thmx, accdb, accde, accdr и accdt)."


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 05 апр 2019, 10:54 
Не в сети
Постоянный участник

Зарегистрирован: 02 авг 2012, 16:39
Сообщений: 57
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Ribbon XML Editor не подошел нужно будет почитать как это реализовал Shishok при создании своих таблиц.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 05 апр 2019, 11:16 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3685
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
Gnomych писал(а):
Идея заключалась в другом.
значит я не правильно понял эти слова
Gnomych писал(а):
Я остановился просто на шаблоне документа. Так проще втолковать как что делать людям совсем не сведущим в вопросах касательно ShapeSheet. Но и тут наткнулся на грабли. Начали переименовывать листы как хотят, летит вся автоматизация по заполнению состава документа. Ну а народ привыкнув ко вкусностям перестал обращать на это внимания и в результате при проверке документов я выявляю кучу ошибок.
ну да ладно, заодно и поправил трафарет. может кто-нибудь проверит или даже пригодится кому
Surrogate в сообщении #200 писал(а):
Изображение

Gnomych писал(а):
Создать двумерный массив подрядных организаций с наименованием и адресами (дабы это не хранить в списке shapesheet-е), как реализовать что-бы было сразу для всех не знаю, скорее всего нужно подключать какой-то внешний файл (таблицу) в котором оперативно можно вносить изменения затем черпать информацию для вставки в документ из него. При чём это должна быть именно жесткая вставка, а не связь с файлом. Это для титулов.
я шел примерно таким же путем. из таблиц Excel заполняются поля документа в хранящиеся в ячейках TheDoc. В одном из проектом так переносилось аж 350 значений из Excel. (*)
Gnomych писал(а):
Потом реализовать авто вставку листов с малой рамкой для описаловки, по принципу: если текст больше размера выделенной под него области на листе, вставляется следующий лист и последующий текст вносится уже на него и т.д. пока идёт описательная часть.
таким был первый макрос написанный мной, вернее модифицированный мной.
Surrogate в сообщении #212 21 мая 2010 писал(а):
В своем последнем проекте добавлял в документ Visio к схемам, канонически текстовый документ - листинг конфигурации сетевого устройства, только для того чтоб не мучиться со сквозной нумерацией страниц в документе.
из текстового файла (*.txt) брался конфигурационный файл коммутатора. готовый макрос просто при переполнении листа А4 добавлял новый лист. а я научился вписывать текст в листы где имеются рамки (на первом большая, далее маленькие) (*)
Gnomych писал(а):
Ribbon XML Editor не подошел
вроде там что-то было для визио, у меня тогда была версия 2010. а для 2013 уже можно было с использованием файлов vsdx прикрутить риббон. сейчас у меня нет возможности поставить эту прогу. мой антивирус на нее страшно ругается
Gnomych писал(а):
нужно будет почитать как это реализовал Shishok при создании своих таблиц.
вот здесь целая коллекция ссылок на эту тему
* - эх, найти бы где это у меня сейчас ! :wall:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 05 апр 2019, 11:37 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1479
Очков репутации: 100597

Добавить очки репутацииУменьшить очки репутации
По риббону вот здесь вроде бы все хорошо написано.
https://blog.bvisual.net/2011/03/14/how ... isio-2010/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 05 апр 2019, 14:17 
Не в сети
Постоянный участник

Зарегистрирован: 02 авг 2012, 16:39
Сообщений: 57
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
* - эх, найти бы где это у меня сейчас ! :wall:

Надеюсь всё найдешь и растолкуешь в каком направлении копать. :roll:
По реббону отписался в тему по реббону. В двух словах всё оказалось просто.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 05 апр 2019, 14:54 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3685
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
Gnomych писал(а):
Надеюсь всё найдешь
все пока не получилось. вот этот фрагмент заполняет существующие ячейки в TheDoc, которые в свою очередь являются полями используемыми в штампе
Код:
Public EA As Object, EW As Object
' получаем объект открытую сессию Excel
Set EA = GetObject(,"Excel.Application")
' получаем объект  активную книгу Excel
Set EW = EA.Activeworkbook
' пишем в существующую ячейку TheDoc!user.author значение из ячейки A1 (1 строка, 1 столбец) на первой вкладке эксель
ActiveDocument.DocumentSheet.Cells("user.author").FormulaU = Chr(34) & EW.Sheets(1).Cells(1, 1) & Chr(34)
' пишем в существующую ячейку TheDoc!user.utv значение из ячейки B1 (1 строка, 2 столбец) на первой вкладке эксель
ActiveDocument.DocumentSheet.Cells("user.utv").FormulaU = Chr(34) & EW.Sheets(1).Cells(1, 2) & Chr(34)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на шейп на другой странице
СообщениеДобавлено: 05 апр 2019, 15:11 
Не в сети
Постоянный участник

Зарегистрирован: 02 авг 2012, 16:39
Сообщений: 57
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Правильно ли я понял.
Для вставки значений в TheDoc!User у меня должна быть в Excel открыта книга и лист с моей базой?
Код:
' получаем объект  активную книгу Excel
Set EW = EA.Activeworkbook

По ходу мы в EW переписываем значения из активного листа (опа, нет, открытой книги), потом в TheDoc вставляем значения из EW ссылаясь на нужный лист и ячейку.
Если это верно, то с ходу ещё вопрос. А как не открывая книгу в Excel подхватить файл по заранее известному пути?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 100 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB