19

Excel. Нужна помощь. Автоматическое создание гиперссылок

Всех приветствую. Возникла следующая, неразрешимая для меня, задача. Имеется excel таблица, в одном столбце серийные уникальные 15-значные номера оборудования. Также имеется папка, содержащая подпапки, в которых находятся .pdf файлы с паспортами оборудования. Каждый pdf файл переименован в соответствии с уникальным 15-значным серийным номером. Задача состоит в том, чтобы в excel таблице в соседнем столбце с номерами оборудования автоматически проставлялись гиперссылки на соответствующий файл pdf. Важный момент, почему бы не сделать это вручную – объем в тысячи штук + весь архив документов, включающий excel таблицу и все pdf файлы должен перемещаться на различные ПК, соответственно гиперссылки будут ломаться.

Что смог осилить я: получилось двумя способами составлять каталог гиперссылок на pdf файлы в вышеозначенной папке.

Способ 1. С помощью надстройки в excel ASAP Utillities на отдельном листе выводится список гиперссылок на файлы в заданной папке. Возможно есть шанс связать его с номерами оборудования через какую-то формулу, но обычный ВПР у меня не срабатывает, да и как сделать результат в ячейке гиперссылкой хотя бы на отдельный лист с гиперссылками я не понимаю.

Способ 2. Нашел excel файл с макросом, дающим тот же результат, как и в Способе 1, но так как с VBA у меня все довольно не очень, что дописать в макрос, чтобы он соотносил созданные гиперссылки с заданными номерами оборудования, я даже не представляю.

На этом светлые идеи у меня закончились. В каком направлении копать дальше – просто не понимаю. Возможно, кто-то уже сталкивался с подобной задачей и путями её решения, возможно я изначально начал действовать в не правильном направлении или в самом excel есть волшебная кнопка/функция, которая все это делает легко и просто, а я по своей бестолковости, единственный кто об этом не знает. Буду безмерно благодарен за любые подсказки.

И по традиции - кот пикабушника для привлечения хорошего настроения.

Excel. Нужна помощь. Автоматическое создание гиперссылок

MS, Libreoffice & Google docs

761 пост14.9K подписчик

Правила сообщества

1. Не нарушать правила Пикабу

2. Публиковать посты соответствующие тематике сообщества

3. Проявлять уважение к пользователям

4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.

По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях


Важно - сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.

Утверждения вроде "пост - отстой", это оскорбление автора и будет наказываться баном.

1
Автор поста оценил этот комментарий

Ну, а меня земноводное душит, забесплатно :D
А так простейшая функция

Sub Макрос1()
If Dir("C:\Picture.jpg") = "" Then
MsgBox "Такой картинки нет!", 48, "Ошибка"
Else
MsgBox "Такая картинка есть!", 64, "Картинка"
End If
End Sub
Это если проверять наличие.

А путь к папкам/подпапкам - это получение папок, потом проверка в каждой из них.
Или оптимизированнее, но сложнее - получить список папок и файлов в них и потом искать среди них файл.
А если еще оптимизированнее и еще сложнее - создать словарь файлов, где вторым итемом будет указан путь к файлу с папкой и тогда поиск будет происходить буквально в четыре строки :D

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо, возьму на вооружение. Буду глубже вникать в функции VBA, думаю так и так в дальнейшем по жизни пригодится

1
Автор поста оценил этот комментарий

Тогла гуглите функцию Файл() - с ее помощью вытащите ссылки на подпапки.

Или через power query - а далее Гиперссылка()

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо за наводку, пойду изучать

1
Автор поста оценил этот комментарий
Интересные обои на рабочем столе)
Кот топчик, у меня тоже рыжий)
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Это не обои, просто смотрел обзор Бэдкомидиана и кот запрыгнул на стол (он так обычно не поступает), а я решил его сфотографировать, так что кадр совершенно рандомный:)

1
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Думал как вариант, так и поступить, но дело в том что в списке номеров больше чем файлов. Эксель создаёт ссылки по полному списку.Получается часть ссылок будет не рабочих, вручную из проверять не вариант, а результат должен быть такой, чтобы только реальные ссылки отображались. Сейчас подумал про формулу ЕСЛИОШИБКА, но проверить смогу только в понедельник.
2
Автор поста оценил этот комментарий

Если есть лист со всеми ссылками.

Тогда можно так.

На втором листе со ссылками, в соседний столбец  добавляем и протягиваем формулу

=ПСТР(A2;ДЛСТР(A2)-18;15)

Она вытащит 15 значный номер документ из гиперссылки.

Возвращаемся на первый лист и в столбце где будут гиперссылки вставляем следующую формулу и протягиваем ее

=ГИПЕРССЫЛКА(ДВССЫЛ("Ссылки!A"&ПОИСКПОЗ(A2;Ссылки!B:B;0));ДВССЫЛ("Ссылки!A"&ПОИСКПОЗ(A2;Ссылки!B:B;0)))

Формула найдет соответствие номеров и сделает гиперссылку на документ используя гиперссылку из листа с гиперссылками.

Все.


Пример в гифке.

Предпросмотр
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо, очень круто. Лист с ссылками первоначально предполагаю формировать как указывал @querulus с помощью PowerQwery, позже по мере изучения, планирую внедрить макрос. Насколько все таки Excel мощный и разносторонний инструмент!

показать ответы
1
Автор поста оценил этот комментарий

=Гиперссылка(A1,Сцепить(А2,”.pdf”))

НачаЯ с ячейки А2 название ваши 15и значные, а в ячейке А1 путь до папки указываете...

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо, попробую

1
Автор поста оценил этот комментарий

Типа сделать файл переносимым вместе с базой документов?
Тогда простенький макрос, который при запуске будет перестраивать ссылки в соответствии с текущим месторасположением файла.

Можно чуток усложнить, чтобы при запуске он проверял доступность ссылок и если они отсутствуют, пытался пересчитать с учетом текущего месторасположения файла.


PS уточнил, есть же относительные гиперссылки с учетом от текущего месторасположения файла. Поэтому можно даже без макроса.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Совершенно точно. Тоже задумывался именно о макросе, т.к. он умеет копать в глубину папки/подпапок, чего ГИПЕРССЫЛКА самостоятельно не может. Вручную указывать подпапки даже в относительных ссылках слишком долго. Думал о макросе с поиском в папке по совпадению названия файла с текстом в ячейке, но конкретного ничего не нашел, а как написать самому - не знаю, с VBA только начинаю знакомиться и логика мне дается с трудом.

показать ответы
1
Автор поста оценил этот комментарий
Попробуй генератор формул для Excel на основе вопроса на естественном языке.
https://excelformulabot.com. Сам не пробовал, но говорят работает.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо за наводку, сохранил - буду ковырять

2
Автор поста оценил этот комментарий

Почему ТОЛЬКО вручную ?

...его также можно задать формулой

Например, "c:\folder\"&A1&".pdf"

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

показать ответы
1
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Честно говоря не понял как может помочь сложение срок. Возможно я чего-то не знаю, но слагаемые строки придется указывать вручную, а это, к сожалению не вариант. Если не сложно, объясните пожалуйста поподробнее, что вы имели ввиду.

показать ответы
1
Автор поста оценил этот комментарий

Есть типовая формула Гиперссылка() она вам не подходит?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

К сожалению типовая формула совсем не подходит - в ней необходимо вручную указывать адрес каждого файла.

показать ответы