массовая замена ссылок на путь к папке в EXCEL

Автор Посетитель 23.01.2024, 23 января 2024, 13:04

Посетитель 23.01.2024

Добрый день.
Необходимо заменить путь в столбце E. Нужно заменить значение 2023 на 2024 желательно сразу во всей книге или по листам
='\\zerocool\Exchange\SeaEnergy\БП2023\[БП_2023_form.xlsx]номер ячейки

Нашла макрос, но он не выполняет свою функцию, ошибку не выдает, диалоговые окна о диапазоне, что на что менять выдает. Подскажите где ошибка?
Файл с поддержкой макроса, разработчик - VB- insert-module - alt+f11

Макрос
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("Что меняем?", "Ввод данных", ".excel_vba")
  sRep = InputBox("На что меняем?", "Ввод данных", "excel-vba")
  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
[свернуть]

[ФАЙЛЫ ВАШИ ПОЛУЧЕНЫ - НЕТ НЕОБХОДИМОСТИ ВЫКЛАДЫВАТЬ ИХ ПОВТОРНО]

Администратор

Если у вас одна книга (т.е. не много работы), то можно вообще без макроса сделать замену.
Выделите фрагмент, в котором нужно сделать замену.
В поле Найти вставьте:
='\\zerocool\Exchange\SeaEnergy\БП2023\[БП_2023_form.xlsx]Merle'!$O15
В поле заменить:
='\\zerocool\Exchange\SeaEnergy\БП2024\[БП_2024_form.xlsx]Merle'!$O15
Нажмите "Заменить все", появится диалог для выбора файла, нажмите "Отмена".
Готово.

Администратор

Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Посетитель 23.01.2024

спасибо за вариант. Файлов много, в каждом файле множество вкладок, заменой обрабатывать очень трудоемко. Файлы стандартизированы т.е. содержат однообразную форму с одинаковым количеством строк и столбцов. Хотелось бы убыстрить процесс замены формульных ссылок через макрос

Администратор

Вы предоставили макрос, в котором пользователь выбирает диапазон.
Если нужно обработать несколько листов, то при каждом запуске пользователь должен выбирать диапазон. Это наверное долго.