Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/28: Рейтинг темы: голосов - 28, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 3
1

VISIO поиск Shape по свойствам

25.11.2010, 09:31. Просмотров 5524. Ответов 6
Метки нет (Все метки)

как найти Shape по одному из свойств?

Например у нас есть 10000 различных фигур, у всех есть свойство "Код", мне нужно найти фигуру с кодом, например, "Obj0001".
0
Миниатюры
VISIO поиск Shape по свойствам  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2010, 09:31
Ответы с готовыми решениями:

Объект Shape в Visio
Добрый день, интересует два момента в Visio (2007): Есть коллекция фигур Visio.Shapes, состоящая...

Поиск по свойствам документа Word
With ActiveDocument.CustomDocumentProperties.Find .ClearFormatting .Replacement.ClearFormatting...

Поиск файлов по свойствам доступа и вывод по 2 строки из них
Мне надо создать скрипт для поиска файлов запрещённых для записи всем кроме меня и вывести 2...

Сохранить свой shape как нормальный shape
Создаю свой shape в MS Office Word 2007 Скажите, есть ли возможность сохранить его как shape для...

6
128 / 23 / 3
Регистрация: 23.09.2010
Сообщений: 62
25.11.2010, 10:37 2
Лучший ответ Сообщение было отмечено как решение

Решение

NewLogin1, а как это свойство создаётся? И в чём заключается поиск фигуры? Чтобы выделить её?
0
1900 / 777 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
25.11.2010, 16:14 3
сейчас не стоит Visio, но... вот тебе код по поиску шейпов с именем, например, "квадрат"
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim visShape As visio.Shape
Dim visShapes As visio.Shapes
Dim visPage As visio.page
Dim linkName As Variant
 
Set visPage = Application.activepage
Set visShapes = visPage.Shapes
 
For Each visShape In visShapes
      If visShape.Name = "квадрат" Then
        'твои действия
      End If
Next visShape
его не трудно модифицировать для поиска по коду. просто я не помню в каком свойстве он хранится
0
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 3
26.11.2010, 02:28  [ТС] 4
Цитата Сообщение от Terminators Посмотреть сообщение
NewLogin1, а как это свойство создаётся? И в чём заключается поиск фигуры? Чтобы выделить её?
Shape->Custom Properies

Добавлено через 12 минут
Цитата Сообщение от ironegg Посмотреть сообщение
сейчас не стоит Visio, но... вот тебе код по поиску шейпов с именем, например, "квадрат"
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim visShape As visio.Shape
Dim visShapes As visio.Shapes
Dim visPage As visio.page
Dim linkName As Variant
 
Set visPage = Application.activepage
Set visShapes = visPage.Shapes
 
For Each visShape In visShapes
      If visShape.Name = "квадрат" Then
        'твои действия
      End If
Next visShape
его не трудно модифицировать для поиска по коду. просто я не помню в каком свойстве он хранится

Задача стоит так: нужно в Visio передавать коды объектов, по которым определять этот объект, а затем изменять параметры этого объекта.

В кореле это делается так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
            CorelDRAW.Application Draw;
            String NameObj;
            int  ClRed, ClGreen, ClBlue;
 
            Draw = new CorelDRAW.Application();
 
            NameObj = "Obj1";
            ClRed = 255;
            ClGreen = 255;
            ClBlue = 0;
 
            Draw.Visible = true;
            
            Draw.OpenDocument("C:\\Documents and Settings\\admin.SAFON4EG\\Рабочий стол\\Схема Комсомольска.cdr", 1);
          
            CorelDRAW.Shape Shape;
 
            Shape = Draw.ActiveLayer.Shapes.FindShape(NameObj, 0, 0, false, "");
            if (Shape != null)
            {
                Shape.Fill.UniformColor.RGBAssign(ClRed, ClGreen, ClBlue);
            }
            else
                MessageBox.Show("Объект не найден " + NameObj);
В VISIO так и не нашел ничего похожего на FindShape
0
128 / 23 / 3
Регистрация: 23.09.2010
Сообщений: 62
26.11.2010, 11:41 5
NewLogin1, у меня Visio 2007. Там это по-другому сделано, чем у вас. Даже если я код напишу, то он не пойдёт.
Попробуйте записать код с помощью: Сервис - Запись макроса.
0
199 / 186 / 26
Регистрация: 14.02.2010
Сообщений: 540
26.11.2010, 12:34 6
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim pg As Page
  Dim sp As Shape
  
  Set pg = ThisDocument.Pages("Page-1") ' или ThisDocument.Pages(индекс)
  
  ' по ID
  Set sp = pg.Shapes.ItemFromID(1)
  ActiveWindow.Select sp, visSelect + visDeselectAll
  sp.Text = "byID"
  
  ' по имени
  Set sp = pg.Shapes.Item("Sheet.2")
  ActiveWindow.Select sp, visSelect
  sp.Text = "by name"
0
1900 / 777 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
29.11.2010, 18:01 7
не знаю, помог ли тебе код kukuruku310... если что, попробуй вот так
Visual Basic
1
2
3
4
5
6
7
8
9
10
Set visPage = Application.ActivePage
Set visShapes = visPage.Shapes
intPropRow2 = 0 'åñëè òâîå ñâîéñòâî â îêíå ñâîéñòâ ïåðâîå èëè åäèíñòâåííîå... êàê òî òàê
For Each visShape In visShapes
      If visShape.CellsSRC(visSectionProp, intPropRow2, visCustPropsValue).RowNameU = "Êîä" Then
        If visShape.CellsSRC(visSectionProp, intPropRow2, visCustPropsValue).FormulaU = """Obj0001""" Then
          'òâîè äåéñòâèÿ
        End If
      End If
Next visShape
очень сырой обрубок кода для visio 2010. но, вроде, работает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2010, 18:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

shape/ layer shape в по заданному изображению
Не могу shape для использования в приложении: background Может кто поможет. <?xml...

Visio Связь данных Excel с Visio
Здравствуйте! Подскажите, пожалуйста: есть Excel с данными по связям внутри системы (АСУТП). Нужно...

Добавление элементов Visio и интеграция Visio
Добрый день, прошу подсказать чайнику) Есть ли возможность подключения функционала visio viewer и...

Поиск из "Массива обьектов класса" по свойствам(имени, дате.)
Всем доброго времени суток. Есть проблема такая, мне нужно например вывести из массива обьектов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.