Страницы: 1
RSS
Макрос для замены пути в гиперсылке
 
У меня в большом файле произошел сбой гиперссылок. Я нашел макрос для замены пути в гиперсылки но при его применении он работает только для одной ячейки, а для диапазона ячеек не работает. Помогите пожалуйста как это можно исправить?
Макрос
Код
Sub Replace_Hyperlink()
    Dim rCell As Range, rRange As Range, sWhatRep As String, sRep As String
    On Error Resume Next
    Set rRange = Application.InputBox("Укажите диапазон для замены", "Выбор данных", Type:=8)
    If rRange Is Nothing Then Exit Sub
    sWhatRep = InputBox("Что меняем?", "Ввод данных", "AppData\Roaming\Microsoft\Excel")
    sRep = InputBox("На что меняем?", "Ввод данных", "Desktop\НКП и ПСП\Переписка")
    If sWhatRep = "" Then Exit Sub
    If sRep = "" Then
        If MsgBox("Хотите заменить " & sWhatRep & " на пусто?", vbCritical + vbYesNo, "Предупреждение") = vbNo Then Exit Sub
    End If
    Application.ScreenUpdating = 0
    For Each rCell In rRange
        If rCell.Hyperlinks.Count > 0 Then
            If rCell.Hyperlinks(1).Address = rCell.Value Then
                rCell = Replace(rCell.Value, sWhatRep, sRep)
            End If
            If rCell.Hyperlinks(1).Address <> "" Then
                rCell.Hyperlinks(1).Address = Replace(rCell.Hyperlinks(1).Address, sWhatRep, sRep)
            End If
            If rCell.Hyperlinks(1).SubAddress <> "" Then
                rCell.Hyperlinks(1).SubAddress = Replace(rCell.Hyperlinks(1).SubAddress, sWhatRep, sRep)
            End If
        End If
    Next rCell
    Application.ScreenUpdating = 1
End Sub
 
Цитата
Nik791983 написал:
он работает только для одной ячейки, а для диапазона ячеек не работает
работает и для нескольких. опишите, как выбираете ячейки, для которых надо сделать замены. Код писался так, что указывать надо в первом всплывающем окне и об этом написано там, откуда этот код был взят.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
В файле запускаю макрос, эксель предлагает выбрать диапазон (я выделяю его), потом что на что меняю, но он не меняет, а когда выбираешь одну ячейку то все работает....
 
В файле есть условное форматирование?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
нет
 
Тогда без файла сказать причину такого поведения нельзя. Можно лишь попробовать сделать иначе. Вместо строки
Код
Set rRange = Application.InputBox("Укажите диапазон для замены", "Выбор данных", Type:=8)
записать
Код
Set rRange = Selection
Тогда замена будет производиться в выделенных ячейках(ячейки надо будет выделить ДО запуска макроса).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
К сожалению тоже работает только для одной ячейки...Спасибо что попытались помочь...
 
Цитата
Nik791983 написал:
тоже работает только для одной ячейки
плохо верится. Это одна и та же ячейка постоянно? Уверены, что ссылки в них содержат тот текст, который пробуете заменить?
Все же в таком случае я бы настаивал на примере файла, в котором это не работает. Т.к. известны случаи таких утверждений, хотя по факту заменяли совсем не то, что надо.
Изменено: Дмитрий(The_Prist) Щербаков - 24.07.2019 10:27:10
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Прикол в том,что работает для нескольких ячеек, когда я предварительно нажму на все гиперссылки до запуска макроса (как будто активация не работающих ссылок получается)...как-то так
 
Есть какой-то способ открыть сразу все гиперссылки? )))
 
Цитата
Nik791983 написал:
открыть сразу все гиперссылки?
нет. Но на том сайте, где взяли код есть такое: Как получить адрес гиперссылки из ячейки
Можете в том же листе или на отдельном прописать формулу, чтобы просмотреть какие гиперссылки содержатся в ячейках.
Скорее всего, в файле какой-то сбой и самих гиперссылок для VBA там нет.
Изменено: Дмитрий(The_Prist) Щербаков - 24.07.2019 10:35:10
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Попробуем сейчас...
Страницы: 1
Наверх