В Excel, как я могу программно редактировать адрес в диапазоне ячеек, содержащих гиперссылки? - PullRequest
3 голосов
/ 16 декабря 2011

У меня есть столбец, содержащий гиперссылки, и я хочу выполнить программный поиск и заменить адрес гиперссылки - сам адрес, а не текст для отображения.Как мне это сделать?

1 Ответ

2 голосов
/ 16 декабря 2011

Путем изменения свойства «Адрес» элемента «Гиперссылки» объекта диапазона. Гиперссылки - это коллекция, поэтому вы выберете первый элемент, если ваш диапазон представляет собой одну ячейку, но он позволяет вам легко проходить по всем ссылкам, содержащимся в данном диапазоне или рабочей таблице.

Ниже приведен пример изменения ссылки только для выбранной ячейки (примечание: она уже должна иметь гиперссылку).

Sub ChangeLink()
    Application.ActiveCell.Hyperlinks(1).Address = "www.test.com"
End Sub

Вот вариант, который изменяет все ссылки в текущем листе на www.google.com, если они в настоящее время не указывают на www.google.com (не обязательно, но только для демонстрации):

Sub ChangeLinks()
    For x = 1 To Application.ActiveSheet.Hyperlinks.Count
        If Application.ActiveSheet.Hyperlinks(x).Address <> "www.google.com" Then
            Application.ActiveSheet.Hyperlinks(x).Address = "www.google.com"
        End If
    Next x
End Sub

Вы также можете добавлять и удалять ссылки, используя методы Hyperlinks.Add и .Delete. Свойство TextToDisplay позволяет изменять текст, а свойство Range позволяет получить доступ (или выяснить), к каким ячейкам относится данная ссылка.

РЕДАКТИРОВАТЬ: В соответствии с просьбой, вот как это сделать для всех ссылок в одном конкретном столбце.

Чаще всего мне нравится создавать несколько переменных для назначения (установки) объектов, с которыми я работаю, таких как рабочий лист (здесь вызывается «Sheet1»), а затем фактический столбец, на который я буду ссылаться myColumn. Если вы получаете сообщение об ошибке, это позволяет вам точно определить, где именно происходит сбой.

Обратите внимание, как коллекция Hyperlinks хорошо настраивается в соответствии с объектом, из которого вы ее вызываете!

Я также добавил проверку, которая показывает сообщение, если в указанном столбце нет ссылок.

Sub ChangeLinksInColumn()
Dim mySheet As Worksheet
Dim myColumn As Range

Set mySheet = Application.Worksheets("Sheet1")
Set myColumn = mySheet.Columns(3) ' Enter column number here

' Check if column contains hyperlinks
If myColumn.Hyperlinks.Count = 0 Then
  MsgBox "No hyperlinks in specified column."
Else
  ' Perform task in myColumn only
  For x = 1 To myColumn.Hyperlinks.Count
      myColumn.Hyperlinks(x).Address = "www.google.com"
  Next x
End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...