Написать в ячейку в сетке, Visio с помощью VBA - PullRequest
0 голосов
/ 02 июля 2019

Я создаю макрос, который берет текст в выбранной форме и записывает его в первую пустую строку в таблице.

Попытка вставки таблицы Excel, однако она задерживалась каждый раз, когда я нажимал на нее.

Вместо этого я использую форму сетки для создания таблицы размером 50x1. Проблема в том, что сетка может создавать только 10 строк за раз, а это значит, что мне нужно копировать и вставлять сетки вместе.

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

Dim vsoCharacters1 As Visio.Characters
    Set vsoCharacters1 = Application.ActiveWindow.Page.Shapes_
    .ItemFromID(7272).Characters 'Just copying from a cell at the moment.
    vsoCharacters1.Begin = 0
    vsoCharacters1.End = 2
    vsoCharacters1.Copy

    Dim vsoCharacters2 As Visio.Characters
    For i = 7163 To 7174  'The ItemID for this grid, manually controlled
        If Application.ActiveWindow.Page.Shapes.ItemFromID(i).Value = "" Then
            Set vsoCharacters2 = Application.ActiveWindow.Page.Shapes_
            .ItemFromID(i).Characters
            ActiveWindow.SelectedText = vsoCharacters2
            ActiveWindow.SelectedText.Paste
        ElseIf Application.ActiveWindow.Page.Shapes.ItemFromID(i)_
        .Value <> "" Then i = i + 1
    End

Код выше в данный момент не компилируется, вместо этого он получает ошибку ниже:

«Блокировать без конца, если»

...