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

обойти коллекцию Visio.ActivePage.Shapes, найти нужный FillStyle и удалить.
...
Рейтинг: 0 / 0
Выбор фигур в Visio vba
    #39658310
venrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как быть тогда с объектами текста? Ведь у них тоже нет заливки
...
Рейтинг: 0 / 0
Выбор фигур в Visio vba
    #39658367
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
venrtкак быть тогда с объектами текста?Проверять, что найденный Shape не есть "объект текста", вероятно...
...
Рейтинг: 0 / 0
Выбор фигур в Visio vba
    #39666140
venrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите что не так делаю?
Вот код, который вроде ищет все пустые элементы и удаляет их. Но почему-то он не удаляет их все с первого раза, оставляет половину
Код: 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
Выбор фигур в Visio vba
    #39666199
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Выбор фигур в Visio vba
    #39666305
venrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,

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


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