В настоящее время я интегрирую Excel с Visio для автоматического заполнения некоторых элементов диаграммой. Я до сих пор прилагаю усилия, но застрял между документацией, макрозаписью и фактически делаю то, что хочу.Использование Excel для создания диаграммы Visio - использование метода «select» в заявлении IF
При записи макросов я нашел способ выбора отдельных элементов, как так: ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(216), visSelect
У меня есть цикл в моем сценарии следующим образом:
For Each oItem In vsoDocument.Pages(sitePage).Shapes
If oItem.Name <> "Sheet.2" Then
'vsoDocument.Pages(sitePage).Select oItem.Item, visSelect ' NOW REMOVED
oItem.DeleteEx (visDeleteNormal)
Debug.Print oItem.Name
End If
Next oItem
UPDATE: Исходя из ваших ответов и здравомыслия проверяет, что вы правы, что мне не нужно выбирать форму. Я изменил код, чтобы просто показать oItem.DeleteEx (visDeleteNormal)
, и это работает так, как ожидалось. Однако на моем листе осталось несколько фигур, например, с именем «Ethernet.46». Я не знаю, почему были удалены некоторые фигуры, а также почему был удален исходный фон страницы. Я обнаружил, что если я запустил цикл One for один раз, добавьте фон обратно в WITH vsoDocument.Pages(sitePage).BackPage
, а затем запустите цикл For еще раз 5 раз подряд, и он, наконец, удалит все фигуры.
ВОПРОС: Почему мой цикл For ведет себя неустранимо?
Почему вы используете 'oItem.Item', а не только' oItem'? –
Объектная модель Visio dox: https://msdn.microsoft.com/en-us/library/office/ff765377.aspx –
Это выстрел в темноте и, возможно, немного неуклюжий, но попробуйте: 'vsoDocument.Application. ActiveWindow.Select oItem, visSelect' –