Страницы: 1
RSS
Превращение абсолютных ссылок в относительные, Превращение абсолютных ссылок на внешние файлы в относительные
 
История следующая: было около сотни рабочих шаблонов со ссылками на внешние файлы (лежащие в той же папке) и я на протяжении месяца переписывал эти шаблоны в процессе не заметив, как сломались относительные ссылки и превратились в абсолютные.

Очень прошу подсказать хоть сколько нибудь быстрый метод замены ссылок, а то в каждом файле по 10-20 ссылок на 2-5 файлов (и нужны именно относительные т.к. шаблоны будут вставляться в разные папки и должны каждый раз находить новые связи внутри папок)

Попытался руками просто удалить абсолютную ссылку, но Эксель не даёт этого сделать и начинает требовать указать путь к новому файлу через проводник

upd: попытался написать макрос, но и formula и text и value выдают только значение формулы, а не саму формулу
Изменено: Zozel - 04.04.2024 18:36:34
 
offtop
пост проверки зрения
 
Извиняюсь, писал с телефона, а он сильно преувеличивает размер текста. Дублирую для удобства:

История следующая: было около сотни рабочих шаблонов со ссылками на внешние файлы (лежащие в той же папке) и я на протяжении месяца переписывал эти шаблоны в процессе не заметив, как сломались относительные ссылки и превратились в абсолютные.


Очень прошу подсказать хоть сколько нибудь быстрый метод замены ссылок, а то в каждом файле по 10-20 ссылок на 2-5 файлов (и нужны именно относительные т.к. шаблоны будут вставляться в разные папки и должны каждый раз находить новые связи внутри папок)


Попытался руками просто удалить абсолютную ссылку, но Эксель не даёт этого сделать и начинает требовать указать путь к новому файлу через проводник
 
Как поменять в формулах относительные ссылки на абсолютные и наоборот?
не подойдет такой вариант?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, не, тут говорится про ссылки на ячейки, а у меня проблема с ссылками на книги ($A$1 против C:User/desctop/papka/papkavpapke/нужный файл.xlsx)

попытался написать макрос, но и formula и text и value выдают только значение формулы, а не саму формулу  
Изменено: Zozel - 04.04.2024 18:36:50
 
Цитата
написал:
тут говорится про ссылки на ячейки, а у меня проблема с ссылками на книги
а в чем разница, извините? В других книгах нет ячеек?
Цитата
Zozel написал:
$A$1 против C:User/desctop/papka/papkavpapke/нужный файл.xlsx
речь точно про ссылки или это пути какие-то? Может ГИПЕРССЫЛКИ? По сути у Вас ссылки на папки, верно? Тогда здесь надо как минимум видеть файл, в котором прописаны эти все "ссылки", чтобы понимать, что вообще надо корректировать.
Изменено: Дмитрий(The_Prist) Щербаков - 04.04.2024 18:58:09
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, Да, у меня ссылки на папки, в самом экселе эта вкладка называется "связи".


Файл к сожалению скинуть не могу т.к. он немного секретный, но суть в том, что нужно заменить связь формата "='C:\User\Desctop\Workfolder\Обмен\Zozel\11256\Файл для работы\[Инвентаризация.xlsx]03'!D9" на "='[Инвентаризация.xlsx]03'!D9". Файлы на которые ведёт ссылка могут быть разными, но все лежат в той же папке, что и рабочая книга.

Как уже говорил, макрос формулу в ячейке почему то видеть отказывается, единственный способ который сейчас нашёл - искать гиперссылки через ctrl+F и заменять на относительные при открытом файле, на который должна вести ссылка
 
Цитата
Zozel написал:
но все лежат в той же папке, что и рабочая книга
Да, Excel не умеет создавать относительные пути. Никак Вы этого не избежите, всегда после закрытия книги с ячейками будет преобразование в абсолютную адресацию к папке.
Быстро можно заменить с помощью Ctrl+F так(при открытом файле источнике):
найти: *[
Заменить на: [
Убедиться, что в параметрах поиска-замены снята галочка с "Ячейка целиком" и поиск идет по формулам.
Цитата
Zozel написал:
искать гиперссылки
гиперссылки это другое :) Это такие ссылки, при клике на которые открывается конкретный файл или происходит переход на конкретную ячейку.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
Никак Вы этого не избежите, всегда после закрытия книги с ячейками будет преобразование в абсолютную адресацию к папке.
Ну, не совсем, если открыта книга на которую ссылается ячейка, то при закрытии ссылка останется "Относительной", и при следующем открытии файла эксель будет искать данные либо в уже открытых книгах, либо в той же папке где сам находится.

Цитата
написал:
Быстро можно заменить с помощью Ctrl+F так(при открытом файле источнике):
Спасибо за совет, так примерно и делаю, думаю за пару  дней управлюсь, но всё равно времени чутка жалко.
 
Цитата
Zozel написал:
если открыта книга на которую ссылается ячейка, то при закрытии ссылка останется "Относительной",
ни разу такого не встречал :) Т.е. когда Вы закрываете книгу источник у Вас в ячейке ссылки на эту книгу не выглядят как конкретный путь к этой книге? Мы может опять про разное что-то говорим? Может Вы имеете ввиду, что закрываете саму книгу со ссылками, а не книгу-источник, на которую ведут ссылки? И даже в этом случае такой механизм нет-нет да будет давать сбой и Excel в какой-то момент может прописать последний известный путь к книге, а не искать среди открытых.
Цитата
Zozel написал:
думаю за пару  дней управлюсь
т.е. Вам не в одной книге это надо сделать, что ли? Просто вроде бы достаточно одной такой замены по всей книге(в параметрах можно делать замену во всех листах разом).
Изменено: Дмитрий(The_Prist) Щербаков - 05.04.2024 10:31:08
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
Может Вы имеете ввиду, что закрываете саму книгу со ссылками, а не книгу-источник, на которую ведут ссылки?
С формулировками у меня туго как выяснилось, так что просто объясню как я это делаю. Ссылка находится в ОсновнаяКнига, и ведёт на КнигаИсточник.
Я открываю оба файла (путь не важен, нужно только чтобы имена совпадали и лежали в одной папке), и изменяю значение ячейки в ОсновнаяКнига с
"='C:\User\Desctop\Zozel\Файл для работы\[КнигаИсточник.xlsx]03'!D9" на
"='[КнигаИсточник.xlsx]03'!D9"
Ссылка автоматически переназначается на открытый файл КнигаИсточник и не требует указывает путь к ней. После этого не закрывая КнигаИсточник закрываю и сохраняю ОсновнаяКнига. Как итог в ячейке остаётся краткая ссылка "='[КнигаИсточник.xlsx]03'!D9".
Ну и потом эксель при открытии книги пытается найти файл имея только его название (а это открытые книги и книги в той же папке) и заполняет ссылку маршрутом до самого себя (как я понимаю). Таким образом не получается файл который можно было бы кидать из папки в папку и чтобы он каждый раз подтягивал новые данные, но можно сделать шаблон, который будет адаптироваться к папке в которую его скопируют. Для моих целей не идеально, но в целом подходит
Цитата
написал:
т.е. Вам не в одной книге это надо сделать, что ли?
Да, к сожалению. Сотня файлов практически
 
Цитата
Zozel написал:
Сотня файлов практически
т.е. сотня файлов типа "ОсновнаяКнига" с такими ссылками? Начинайте изучать макросы - с их помощью это можно сделать за минуту :)
Жмете кнопочку - указываете папку с этими файлами(если они все в одной папке, конечно). Код переберет все эти файлы и заменит в них во всех листах ссылки с полных путей на краткие. Правда, есть нюанс: перед этим надо будет открыть все "КнигиИсточники" для этих файлов.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
Начинайте изучать макросы - с их помощью это можно сделать за минуту
Уже пытался сделать это макросом, но не выходит получить формулу из ячейки. - formula и text и value выдают только значение формулы, а не саму формулу (т.е. в переменную попадает значение "41000", а не "='C:\User\Desctop\Zozel\Файл для работы\[КнигаИсточник.xlsx]03'!D9", не приложу ума из-за чего так происходит)

(ну, я пытался просто перебрать все ячейки во всех книгах и если там есть ссылка то отредактировать значение на нужное по принципу "приравнял переменную ячейке, отредактировал, приравнял ячейку переменной". А необходимые книги можно было руками открыть предварительно)
Страницы: 1
Наверх