Заполнение полей с гиперссылками Visio VBA

#vba #hyperlink #visio

#vba #гиперссылка #visio

Вопрос:

Я довольно хорошо разбираюсь в VBA, когда дело доходит до Excel, но не так много в Visio. То, что я хочу сделать, просто. Если бы у меня была гиперссылка на объект, я хотел бы, чтобы этот объект был заполнен синим цветом. В Excel я мог бы сделать это без проблем. В Visio не так много. Блок-схема достаточно проста, я бы сказал, 20 объектов или около того, и не все из них будут связаны гиперссылками.

Комментарии:

1.Я немного повздорил с Visio на предыдущем концерте. Хотя у меня, к сожалению, нет доступа к установке, с которой можно было бы поиграть, через несколько минут на сайте MSDN появилась пара интересных ссылок: 1. Shape.Hyperlinks свойство и 2. Hyperlink.Address свойство. Возможно, вы могли бы перебирать фигуры, проверяя, Hyperlink.Address пусто ли они, используя это как If...Then проверку для применения изменений цвета?

2. Прежде всего, спасибо за редактирование и голосование против. Это мой первый вопрос здесь, и мне просто нужна небольшая помощь. Дэн, спасибо за твой ответ. Я знаю, что я близок к тому, чтобы заставить его работать, но я просто слишком незнаком с синтаксисом, используемым в Visio. Мне придется продолжать оглядываться и надеяться что-нибудь найти.

3. Я не был сторонником отказа

4. Нет, нет, я знаю. Этот код Visio так расстраивает, потому что я знаю, что это так просто, но я просто ничего не знаю о синтаксисе Visio VBA.

Ответ №1:

Вот некоторый псевдокод VBA, который я мог бы попробовать в духе моего комментария выше:

 Dim Sh As Visio.Shape
Dim Link As Hyperlink

For Each Sh In Visio.ActivePage.Shapes  '<~ loop through the shapes collection
    For Each Link In Sh.Hyperlinks      '<~ loop through the links collection
        If Not Link.Address = "" Then   '<~ check for a blank address
            Sh.Cells("Fillforegnd") = 2 '<~ apply a color to the shape
        End If
    Next Link
Next Sh
 

Комментарии:

1. Спасибо, сэр, это сработало отлично. Следующее, что мне нужно выяснить, это как заставить страницу реализовать эти изменения без использования кнопки. Обычно в Excel я просто использую подраздел Workbook_Change, но мне придется с ним поиграть. Еще раз спасибо.

2. теперь я хочу добавить что-то в ваш код. Я пытаюсь добавить в код, чтобы он изменился на другой цвет, если адрес гиперссылки пуст. Это то, что я пробовал: установить Sh = Visio. Активная страница. Формы (1) для каждой ссылки в sh.Гиперссылки, если ссылка. Адрес <> «» Затем Sh.Ячейки («Fillforegnd»). Формула = «RGB(255, 102, 0)» В противном случае ссылка. Address = » » Затем Sh.Cells(«Fillforegnd») = 1 конец, если следующая ссылка завершает Sub

3. Я не уверен, что понимаю ваш запрос… Ваша попытка не сработала? Я бы не стал добавлять в комментарии все, кроме самых простых фрагментов кода, лучше отредактировать исходное сообщение, если это небольшая корректировка, или задать новый вопрос, если это большая корректировка