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

Форум по вопросам применения и программирования в Visio
Текущее время: 16 июн 2019, 06:33

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


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


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



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

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

Добавить очки репутацииУменьшить очки репутации
Добрый день! Эта тема мною уже поднималась viewtopic.php?f=6&t=1437. Если нужно, то можно их объединить. Задача как и прежде. Есть одинаковые шейпы. У каждого шейпа есть данные "Позиция" и "Место", которые являются идентификатором для шейпа. В каждом шейпе есть ячейка которая вызывает макрос по определённому условию (изменению позиции и места) с помощью функции CALLTHIS. Макрос смотрит, есть ли ячейка в Документе с именем Позиция_Место, если нет, то нужно её создать, иначе выполнить другие функции. Вообщем всю логику расписывать не буду, так как это не предмет разговора, да и она работает как надо. Проблемы возникают когда за один раз меняю много шейпов (например у всех шейпов изменил место). При таком раскладе обрабатываются не все шейпы. Из прошлого поста было предположение что это похоже на переполнение очереди. Однако следует отметить, что в зависимости от сложности макроса (читай времени выполнения) меняется число обработанных шейпов, что наводит на мысль, что это как-то связано со временем, а не с количеством.
Вопрос в следующем, где можно почитать про это ограничение и как с ним бороться.
Я понимаю, что такая реализация выглядит, мягко сказать, кривой, и что лучше написать какой-то макрос, который будет перебирать все шейпы и делать то что нужно. Но мне нужен именно такой подход, как я описал. И если честно то я не вижу в чём разница если я массово изменю кучу шейпов (без CALLTHIS и макросов), то все формулы сработают как надо, а вот если с макросом, то вступает какое-то ограничение.
Прилагаю файл для примера. На странице "2" есть 400 абсолютно одинаковых шейпа. Для моделирования ситуации можно просто переименовать эту страницу. В ShapSheet документа в ячейке Prop.UZ2_BOX2.Prompt должна наполниться строка по типу гиперссылок 2/Sheet.1;2/Sheet.2 и т.д. для всех шейпов страницы. Но их получается у меня 138 (проверял через Excel - делил текст по разделителю ";")


Вложения:
Example.vsdm [152.48 Кб]
Скачиваний: 4
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередь выполнения макросов
СообщениеДобавлено: 12 июн 2019, 11:03 
Не в сети
Administrator

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

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

За много лет никогда об таком не слышал. Скорее всего по этому вопросу ответов не будет.
Цитата:
И если честно то я не вижу в чём разница если я массово изменю кучу шейпов (без CALLTHIS и макросов), то все формулы сработают как надо, а вот если с макросом, то вступает какое-то ограничение.

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


Вложения:
chain.gif
chain.gif [ 131.96 Кб | Просмотров: 55 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередь выполнения макросов
СообщениеДобавлено: 12 июн 2019, 11:30 
Не в сети
Постоянный участник

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

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Скорее всего по этому вопросу ответов не будет.

Наверное стоит задать этот вопрос в Microsoft, может они разъяснят.
Если кто знает куда писать, подскажите пожалуйста.


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

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

Добавить очки репутацииУменьшить очки репутации
Решил посмотреть и запустил на своей машине. Увидел вот такое сообщение


Вложения:
Cap.JPG
Cap.JPG [ 42.18 Кб | Просмотров: 44 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередь выполнения макросов
СообщениеДобавлено: 12 июн 2019, 11:37 
Не в сети
Постоянный участник

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

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Увидел вот такое сообщение

Странно у меня такого не было. Пойду гуглить что такое stack space


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

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



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

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


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

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