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

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 16:17

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


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


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

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Поиск по документу
СообщениеДобавлено: 17 июн 2021, 18:59 
Не в сети

Зарегистрирован: 17 июн 2021, 18:46
Сообщений: 1
Использую Visio c: 2003
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Всем доброго времени суток!

Не знаю может поднималась подобная тема здесь, но вроде пошарился - не нашел (либо плохо искал).
Собственно вопрос:
Можно ли программно через VBA открыть диалог поиска заполнить данными, проставить галки или выполнить поиск через вызов функции visio на vba по документу?
В документе может быть несколько страниц.
Требуется искать по заполненным данным в фигурах. После поиска спозиционироваться на найденной фигуре.
Можно через перебор всех shapes сравнивая данные каждой фигуры, но может можно встроенными средствами? )

Подскажите пожалуйста или направьте на какой-либо ресурс, где об этом можно почитать.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Поиск по документу
СообщениеДобавлено: 17 июн 2021, 23:08 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
Поиск фигур: пример в теме Атоматизация рисования схема visio через VBA с этого сообщения

Там ниже есть "Улучшенный вариант". Скачать его можно с Яндекс-диска автора Shishok (ссылка на диск в подписи сообщения. Файл FindShapes.zip)
Содержимое спрятано под спойлер ↓
Спойлер:
Там для формы Form_Find_1 (макрос Start1) в UserForm_Initialize нужно добавить
Код:
lstvListShapes.LabelEdit = lvwManual
чтобы не редактировалось первое значение в строке (когда на нее тыкаешь)

+ Для правильной работы на 64bit приложениях надо заменить строку
Код:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) As Long
на
Код:
#If VBA7 Then
    Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) As Long
#Else
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) As Long
#End If
спасибо fixer6 за подсказку
в 2007 версии строчка будет красной но все работает

Фокус на фигуре: пример в теме Сделать определенный shape активным
Еще можно сделать сохранение вида окна перед открытием формы и возврат к нему после закрытия
Содержимое спрятано под спойлер ↓
Спойлер:
В переменных формы:
Код:
Public pinLeft As Double, pinTop As Double, pinWidth As Double, pinHeight As Double 'Для сохранения вида окна
в UserForm_Initialize()
Код:
ActiveWindow.GetViewRect pinLeft, pinTop, pinWidth, pinHeight   'Сохраняем вид окна
в btnClose_Click()
Код:
    With ActiveWindow
'        .Page = shpChild.ContainingPage
        .Selection.DeselectAll
        .SetViewRect pinLeft, pinTop, pinWidth, pinHeight  'Восстановление вида окна после закрытия формы
                    '[левый] , [верхний] угол , [ширина] , [высота](вниз) видового окна
    End With
в lstvListShapes_ItemClick()
Код:
    Else
        .Select ActivePage.Shapes(shName), visDeselectAll + visSelect     ' выделение шейпа
        .SetViewRect ActivePage.Shapes(shName).Cells("PinX") - pinWidth / 2, ActivePage.Shapes(shName).Cells("PinY") + pinHeight / 2, pinWidth, pinHeight

На счет стандартного поиска не знаю. Макрорекордер ничего не пишет, а искать в справке не охота.
Файл со всеми изменениями FindShapes+.vsd


Вложения:
FindShapes+.vsd [274 Кб]
Скачиваний: 78

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Поиск по документу
СообщениеДобавлено: 01 июл 2021, 17:56 
Не в сети

Зарегистрирован: 18 июн 2021, 20:22
Сообщений: 11
Использую Visio c: 2019
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
А как мне макрос и вашего файла добавить к себе в готовые?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Поиск по документу
СообщениеДобавлено: 01 июл 2021, 21:31 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
roomjke писал(а):
А как мне макрос и вашего файла добавить к себе в готовые?
формы из файла в файл можно перетащить через проводник проекта VBA, содержимое модуля ThisDocument тупо копипастить.
Дополнено позднее: можно попробовать это решение
nbelyh в сообщении #900 писал(а):
Сделал новый аддин - экспорт/импорт кода VBA из Visio.

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Поиск по документу
СообщениеДобавлено: 07 июл 2021, 17:40 
Не в сети

Зарегистрирован: 18 июн 2021, 20:22
Сообщений: 11
Использую Visio c: 2019
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Почему-то не полностью отображается
Изображение


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Поиск по документу
СообщениеДобавлено: 08 июл 2021, 01:28 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
Гость писал(а):
Почему-то не полностью отображается
Если в 2007 версии настроить впритык, то в других размеры смещаются. Нужно увеличить высоту окна в процедуре ReSize().
Содержимое спрятано под спойлер ↓
Спойлер:
Изображение

И еще, когда тыкаешь по строкам в списке фокус перемещается на соответствующую фигуру, но окно загораживает ее. Чтобы это исправить надо изменить положение окна по умолчанию (опустить его ниже)
Содержимое спрятано под спойлер ↓
Спойлер:
Изображение
Значения для моего разрешения экрана такие. Для своего подбираете или вычисляете в макросе

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Поиск по документу
СообщениеДобавлено: 08 июл 2021, 13:14 
Не в сети

Зарегистрирован: 18 июн 2021, 20:22
Сообщений: 11
Использую Visio c: 2019
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
gtfox писал(а):
И еще, когда тыкаешь по строкам в списке фокус перемещается на соответствующую фигуру, но окно загораживает ее. Чтобы это исправить надо изменить положение окна по умолчанию (опустить его ниже)


У меня почему-то фокус не перемещается на фигуру. Как это можно исправить подскажите пожалуйста


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Поиск по документу
СообщениеДобавлено: 08 июл 2021, 16:53 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
roomjke писал(а):
У меня почему-то фокус не перемещается на фигуру. Как это можно исправить подскажите пожалуйста
У Вас не так?
Содержимое спрятано под спойлер ↓
Спойлер:
Изображение

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Поиск по документу
СообщениеДобавлено: 08 июл 2021, 20:09 
Не в сети

Зарегистрирован: 18 июн 2021, 20:22
Сообщений: 11
Использую Visio c: 2019
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Вот так выглядит у меня. На таблицу переключается, а то что на 1 листе нет
Содержимое спрятано под спойлер ↓
Спойлер:
Изображение


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Поиск по документу
СообщениеДобавлено: 09 июл 2021, 02:13 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
Проверил в 2010 и 2013 - работает нормально, других версий нет.
Я бы поставил точку останова и посмотрел бы что происходит со всеми переменными (какая страница, какой шейп, какие размеры окна и т.п.)
У меня подозрение что как-то не правильно считается положение окна SetViewRect
Содержимое спрятано под спойлер ↓
Спойлер:
Изображение

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


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

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

Добавить очки репутацииУменьшить очки репутации
Я особо не вчитывался в текст, но бросилось в глаза, что GetViewRect запускается один раз при инициализации формы. То есть для активной в тот момент страницы. А полученные данные используются для всех страниц. Может при разных увеличениях другую страницу может "уводить" в сторону?
Проверьте, как скажется, если сделать одинаковый Zoom на всех страницах.


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

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
Есть еще одно подозрение :) на первой странице есть шейп далеко за пределами листа. Может это как-то влияет... попробуйте переместить его в границы листа

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


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

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Проверьте, как скажется, если сделать одинаковый Zoom на всех страницах.

Предположение по поводу GetViewRect было неверным. Можно не проверять.
Меня сбило то, что сабшейпы не центрируются. Ну и случайно эффект совпал :) Подшейп-то (селектированный) становится не невидимым (в определенной ситуации), за пределами экрана.


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

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



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

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


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

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