Страницы: 1
RSS
Макрос замены старых ссылок на новые
 
Приветствую уважаемые форумчане.
имеется однотипная задача, которая при каждом отчетном периоде возникает, необходимо изменить в файлах одни ссылки на другие, обычно это связано из-за нового период.
по старинке это делается так:
1. копируется часть старой ссылки, ctrl+f, вставляется в найти
2. копируется часть новой ссылки, ctrl+f, вставляется в заменить, найти далее, заменить все.

т.к. не знаю команд макросов, попробовал сделать эту операцию через ЗАПИСЬ МАКРОСА. Но при этом команда работает только на этом листе в этом книге и в этих выделенных столбцах.

как сделать, чтобы можно было воспользоваться этим макросом на любой книге, любого листа и выделять любые строки, столбцы где необходимо изменить ссылки.
было бы идеально, если бы можно было бы вбить один раз куда-нибудь заменяемую ссылку и эталонную и пользоваться макросом переходя по всем листам, либо в определенные ячейки либо в всплывающее окно.
 
Yastreb,
привет!
Запишите макрос в личную книгу и пользуйтесь от туда для любой книги.
Код
Sub aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
    Cells.Replace What:="1", Replacement:="2", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
 
evgeniygeo, получается, НО, он срабатывает на всем листе вне зависимости какой диапазон для замены я выделяю. И как сделать, чтобы в "1" и "2" подтягивались данные для поиска и замены (из указанных ячеек, например) ?
 
Yastreb,
тогда вот так?
Код
Sub Макрос1()
    Selection.Replace What:=[a1], Replacement:=[a2], LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
Изменено: evgeniygeo - 10.07.2020 08:15:10
 
evgeniygeo, а если на другом листе расположить переменные для поиска и замены :
Selection.Replace What:=[Лист2'!a1] - так ? выдает ошибку
 
...
Код
Sub Макрос1()    
    Сonst pz as string = "Поиск и замена"    
    Dim myWhat As String, myRepl As String
    Dim mySel As Range
    myWhat = InputBox("Найти:", pz)
    myRepl = InputBox("Заменить на:", pz)
    Set mySel = Application.InputBox("Выделите блок ячеек, в котором будем искать и заменять", pz, Selection.Address, , , , , 8 )
    mySel.Replace What:=myWhat, Replacement:=myRepl, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
Изменено: Михаил Лебедев - 10.07.2020 09:33:09
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
Yastreb написал:
What:=[Лист2'!a1]
где апостроф перед именем листа потеряли?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
точно, вот балда, спасибо , теперь ок.

Михаил Лебедев, evgeniygeo, спасибо большое
 
... или вот так еще можно...
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
Страницы: 1
Наверх