Форум пользователей Visio http://visio.getbb.ru/ |
|
Выполнить SendKeys для конкретного листа http://visio.getbb.ru/viewtopic.php?f=6&t=1120 |
Страница 1 из 1 |
Автор: | lite.fun [ 28 апр 2017, 11:48 ] |
Заголовок сообщения: | Выполнить SendKeys для конкретного листа |
Добрый день, форумчане! Имеется документ Visio, допустим в нем есть Лист1 и Лист2. На Лист1 имеется две кнопки OptionButton, которые выполняют определенные скрипты, которые в итоге либо скрывают либо отображают (путем установки прозрачности) интегрированные на Лист2 картинки (растровые). Так вот по какой-то причине, часть этих самых картинок на Листе2 после программного изменения их прозрачности на 100% не становятся невидимыми на Листа2, чтобы это произошло нужно произвести какое-то действие (например подвинуть их, или с листом что-то сделать), т.е. фактически сделать что-то, чтобы Лист2 обновился. Нашел на просторах сети сочетание клавиш для Visio Ctrl+Alt+G, которое я не знаю что именно делает, но после нажатия лист обновляется и картинки становятся прозрачными. Так вот имеется два вопроса: 1. Почему картинки могут себя так вести (особенно это интересно на фоне того, что не все они себя так ведут) 2. Как можно в VBA скрипте, который выполняется в секции OptionButton, вызываемой с Лист1, отправить команду SendKeys "^%(g)" так, чтобы она выполнилась для Лист2 Заранее благодарю за любые подсказки! |
Автор: | 9rey [ 28 апр 2017, 15:03 ] |
Заголовок сообщения: | Re: Выполнить SendKeys для конкретного листа |
первое, что пришло на ум - программно выделить все шейпы на том листе и сдвинуть вперед и назад. Ну либо сгруппировать/разгруппировать |
Автор: | lite.fun [ 28 апр 2017, 15:21 ] |
Заголовок сообщения: | Re: Выполнить SendKeys для конкретного листа |
9rey писал(а): первое, что пришло на ум - программно выделить все шейпы на том листе и сдвинуть вперед и назад. Ну либо сгруппировать/разгруппировать Мне тоже это пришло первое в голову ))) После изменения прозрачности программно менял угол наклона группы на 1 градус и назад. Не проканало, угол меняется, но все остается по прежнему. Потом тоже самое сделал со смещением объектов, тоже нулевой результат. Потом нашел сочетание клавиш, но как реализовать чет не знаю. |
Автор: | Tumanov [ 28 апр 2017, 15:52 ] |
Заголовок сообщения: | Re: Выполнить SendKeys для конкретного листа |
Сдается мне, что сочетания клавиш действуют в окне. То есть на другом (перекрытом) листе с их помощью ничего сделать нельзя. Может и ошибаюсь, конечно... |
Автор: | lite.fun [ 28 апр 2017, 16:09 ] |
Заголовок сообщения: | Re: Выполнить SendKeys для конкретного листа |
Tumanov писал(а): Сдается мне, что сочетания клавиш действуют в окне. То есть на другом (перекрытом) листе с их помощью ничего сделать нельзя. Может и ошибаюсь, конечно... Находил забугорный форум, где собственно и отрыл эту комбинацию. Там точно такая же проблема была у человека. Ему посоветовали эту комбинацию. Так он тоже столкнулся с тем же с чем и я: при выполнении SendKeys функция действовала на окно VBA, а не на лист. Ему дали ссылку на файл с рабочим скриптом и он радовался, что все сработало. А ссылка уже давно битая, да и тема супер тухлая (с пяток лет). Задал вопрос тут, может кто-то такое делал. |
Автор: | 9rey [ 28 апр 2017, 16:34 ] |
Заголовок сообщения: | Re: Выполнить SendKeys для конкретного листа |
а файлик можно приложить? |
Автор: | Surrogate [ 28 апр 2017, 20:33 ] |
Заголовок сообщения: | Re: Выполнить SendKeys для конкретного листа |
lite.fun писал(а): Находил забугорный форум ну тогда до кучи ссылку на эту тему !Дополнено позднее: про SendKeys я поднимал здесь тему, в обсуждении упоминались два нюанса:
1. необходимость добавлять задержку, чтобы успело произойти переключение между приложениями. Robink в сообщении #4679 писал(а): Только пришлось вставить паузу. или в твоем случае возможно не успевает произойти переключение между страницами или окнами.2. происходит "произвольное" переключение раскладки клавиатуры Robink в сообщении #4688 писал(а): Смотри, что происходит со сменой языка. У меня постоянно переключается на русский. Приходится переключать обратно. |
Автор: | nbelyh [ 01 май 2017, 01:53 ] |
Заголовок сообщения: | Re: Выполнить SendKeys для конкретного листа |
Как мы решали аналогичную проблему, когда что-то не перерисовывалось нормально Dim a As Double, b As Double, c As Double, d As Double ActiveWindow.GetViewRect a, b, c, d ActiveWindow.SetViewRect a, b, c, d + 0.01 ActiveWindow.SetViewRect a, b, c, d Отсюда http://visguy.com/vgforum/index.php?top ... 9#msg10179 |
Автор: | lite.fun [ 02 май 2017, 11:52 ] |
Заголовок сообщения: | Re: Выполнить SendKeys для конкретного листа |
Добрый день! Всем огромное спасибо за советы! Surrogate, я находил тему ссылку на которую Вы дали. Пробовал выставлял паузу, безрезультатно. nbelyh, этот метод я также нашел и опробовал, тоже не помогло. Но нет худо без добра ))) У меня растровые картинки которые я делаю прозрачными/непрозрачными на Лист2 были собраны в группу, из которой я сделал мастер-шейп. Так вот внутри этого мастер шейпа, в User-Define группы у меня было две ячейки, которые использовались в логике скрытия отображения той или иной картинки. Одну из этих ячеек я сразу прям в мастер-шейпе привязал к другой ячейке, которая находится в шейп-лиcте документа. А привязал сразу т.к. в ней ссылка всегда одна и та же, не зависимо от того сколько у меня копий, созданных из мастер-шейпа. А вот вторую ячейку я перепривязывал в каждом созданном шейпе из мастер-шейпа, т.к. там ссылка была каждый раз разная. Итак от полной безисходности решил я пересобрать снова этот свой мастер-шейп, и решил я первую ячейку привязывать не в мастер-шейпе, а в каждом созданном экземпляре, не смотря на то, что ссылка каждый раз одна и та же. И о чудо, все заработало как надо! Стал разбираться и похоже при привязке этой ячейки в мастер-шейпе, ее значение не совсем корректно обрабатывалось в визио, ну или не всегда корректно обновлялось. От этого и были свистопляски с некорректным скрытием/отображением. Не знаю, может это конечно общеизвестный факт, но для меня это было сюрпризом ))) Так что, наверное, тему можно считать закрытой, не смотря на то, что сабж собственно не раскрыт. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |