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

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

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Ограничение на количество обновляемых шейпов
СообщениеДобавлено: 26 мар 2019, 12:57 
Не в сети
Постоянный участник

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 78
Использую Visio c: 2016
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Здравствуйте! Столкнулся со странным ограничением. Есть файл visio в нём находиться один документ excel с простым набором данных - два столбца: Index и Data. В Visio есть один шейп и куча его копий. Шейп содержит данные Index и Дата. Так же добавлена строка в user-defined раздел, которая зависит от изменение индекса в шейпе и запускает макрос (CALLTHIS), который по индексу из excel извлекает данные и вставляет в шейп. Так же эта строка запускается при изменении (любом изменении) параметра User.updateAllData, который находится таблице Документа. При небольшом количестве шейпов всё работает как надо, но если их больше 277 (±), то обновятся только первые 277 штук, остальные останутся без изменений. Как-будто на них не распространяется изменение параметра User.updateAllData в документе. Есть ли способ это побороть?

PS: В документе есть два макроса GetFromExcel и SetToExcel, раньше они были взаимосвязаны (теперь нет), поэтому не обращайте внимания на костыли в коде.


Вложения:
Stess Test.vsdm [162.47 Кб]
Скачиваний: 19


Последний раз редактировалось Machestro 26 мар 2019, 13:22, всего редактировалось 1 раз.
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ограничение на количество обновляемых шейпов
СообщениеДобавлено: 26 мар 2019, 13:19 
Не в сети
Глав-тролль

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


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

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 78
Использую Visio c: 2016
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
Оффтоп:
Правил форума, конечно никто не читает

Прошу прощения!
Что касается вопроса. Решил сделать паузу на 270-ом шейпе - как результат, всё обновилось. Есть ощущение, что какая-то чаcть visio не успевает за чем-то. Возможно поступает слишком много запросов на выполнение макроса, а макрос выполняется не совсем быстро, и visio решает их не выполнять


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

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Есть ощущение, что какая-то чаcть visio не успевает за чем-то. Возможно поступает слишком много запросов на выполнение макроса, а макрос выполняется не совсем быстро, и visio решает их не выполнять

Такого, вроде бы, не бывает.
Макрос может легко остановиться в случае ошибки. Это да. Но не по времени.


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

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

Добавить очки репутацииУменьшить очки репутации
Другое дело, что может быть нечто вроде переполнения очереди...
Ведь у Вас при изменении переменной в документе ВСЕ шейпы начинают требовать запуска одного и того же макроса! Смотрится кривовато.
А почему нельзя запустить макрос один раз и пусть он переберет все шейпы? Пусть отфильтрует нужные по какому-нибудь признаку.


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

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 78
Использую Visio c: 2016
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Хотел избежать этого. Так как шейпы будут на разных страницах, придётся ещё и каждую страницу перебирать


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

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

Добавить очки репутацииУменьшить очки репутации
На мой взгляд, опросить 1000 шейпов даже на разных страницах - гораздо меньшая беда, чем 1000 раз запустить макрос (с доступом к встроенному объекту). Намного меньшая.


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

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


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

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 78
Использую Visio c: 2016
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Да, придётся согласиться с вами. Теперь нужно думать по какому критерию их отбирать, но это уже другая история.


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3705
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Сбор вторичного сырья
Должность: Безработный
Уровнь квалификации: Отсутствует
Machestro писал(а):
думать по какому критерию их отбирать
по крайней мере точно не фигура с иконкой MS Excel ! понятно, что приложенный выше файл абсолютная абстракция. тогда проще создать свои пользовательские фигуры, поместить их в набор элементов (т.е. создать свой собственный стенсил) и проверять фигуры на их родительский мастер. если этот мастер ваш собственный то фигура ваш кандидат.
Shishok в сообщении #7139 писал(а):
А еще у шейпов есть метод - Shape.HasCategory. С помощью него можно классифицировать шейпы по содержимому ячейки User.msvShapeCategories. В некоторых штатных шейпах эта ячейка присутствует и чем то даже заполнена. :) Так что можно самому добавлять ячейку и прописывать там какие то обозначения. Можно даже списком через запятую.

так же народ использует такой метод для фильтрации. это опять же работает со своими собственными фигурами.
Дополнено позднее: про определение имени родительского мастера было развернутое обсуждение здесь.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ограничение на количество обновляемых шейпов
СообщениеДобавлено: 18 июн 2019, 00:30 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 639
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100606

Добавить очки репутацииУменьшить очки репутации
Цитата:
... зависит от изменение в шейпе и запускает макрос (CALLTHIS), который по индексу из excel извлекает данные и вставляет в шейп

IMHO, это сильно хреновая идея.

Visio - по сути большой калькулятор. Котоый умеет пересчитывать значения ячеек через (свои) формулы.
Он это делает достаточно быстро и эффективно, если его не блокировать вставкой в код формул вызовов VBA-макросов.
Это будет ППЦ как тормозно, лучше этого избежать.

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

_________________
Инструменты для облегчения создания диаграмм, и статьи по Visio:
http://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

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



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

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


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

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