Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выбор фигур в Visio vba / 7 сообщений из 7, страница 1 из 1
08.06.2018, 11:28
    #39658186
venrt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор фигур в Visio vba
Добрый день.
Есть документ в Visio со схемами, в котором очень много пустых блоков/фигур со свойством "Нет заливки".
Подскажите возможно ли их, средствами vba, найти и удалить?
...
Рейтинг: 0 / 0
08.06.2018, 13:03
    #39658301
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор фигур в Visio vba
venrt,

обойти коллекцию Visio.ActivePage.Shapes, найти нужный FillStyle и удалить.
...
Рейтинг: 0 / 0
08.06.2018, 13:13
    #39658310
venrt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор фигур в Visio vba
А как быть тогда с объектами текста? Ведь у них тоже нет заливки
...
Рейтинг: 0 / 0
08.06.2018, 14:09
    #39658367
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор фигур в Visio vba
venrtкак быть тогда с объектами текста?Проверять, что найденный Shape не есть "объект текста", вероятно...
...
Рейтинг: 0 / 0
26.06.2018, 17:00
    #39666140
venrt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор фигур в Visio vba
Подскажите что не так делаю?
Вот код, который вроде ищет все пустые элементы и удаляет их. Но почему-то он не удаляет их все с первого раза, оставляет половину
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Public Sub Shapes_Example()
On Error Resume Next
    Dim intCounter As Integer
    Dim intShapeCount As Integer
    Dim nullShapeCount As Integer
    Dim vsoShapes As Visio.Shapes
    Dim vsoPage As Visio.Page
    
    Set vsoPage = ActivePage
    Set vsoShapes = vsoPage.Shapes
    
    intShapeCount = vsoShapes.Count
    nullShapeCount = 0
    If intShapeCount > 0 Then
    ActiveWindow.DeselectAll
        For intCounter = 1 To intShapeCount
            If vsoShapes.Item(intCounter).CellsSRC(visSectionObject, visRowLine, visLinePattern).FormulaU = "0" Then
                If vsoShapes.Item(intCounter).Text = "" Or vsoShapes.Item(intCounter).Text = "­" Then
                    'nullShapeCount = nullShapeCount + 1
                    vsoShapes(intCounter).Delete
                End If
            End If
        Next intCounter
    Else
        Debug.Print "No Shapes On Page"
    End If
   ' Debug.Print "Vsego obektov: " & intShapeCount
    'Debug.Print "Nulevih obektov: " & nullShapeCount
End Sub
...
Рейтинг: 0 / 0
26.06.2018, 19:41
    #39666199
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор фигур в Visio vba
venrt,

вместо:
Код: vbnet
1.
For intCounter = 1 To intShapeCount


запишите:
Код: vbnet
1.
For intCounter = intShapeCount to 1 step -1


потому что идя по номерам элементов, когда Вы удаляете 1-ый, их уже не 10, а 9. И примерно на 6-м получаете ошибку, т.к. нет элемента с таким индексом. Но ошибку Вы не видите, ибо On Error Resume Next в самом начале кода(плохая практика, пока код не отлажен полностью).
...
Рейтинг: 0 / 0
27.06.2018, 08:37
    #39666305
venrt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор фигур в Visio vba
The_Prist,

Спасибо.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выбор фигур в Visio vba / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]