Excel гиперссылка на местоположение веб-страницы с идентификатором или именованным якорем
В Excel я могу создать гиперссылку на веб-страницу. Однако, если URL содержит символ #, Excel всегда преобразует знак хеша в пробел-дефис-пространство, поэтому ссылка больше не работает. URL http://www.example.com/page становится http://www.example.com/page%20-%20location
Я пробовал три способа
вручную щелкните правой кнопкой мыши ячейку, нажмите "гиперссылка" и введите URL-адрес в поле адреса
программно, предоставляя полный URL:
Worksheets(1).Hyperlinks.Add Address:="http://www.example.com/page#location"
программно, давая местоположение как "подадрес":
Worksheets(1).Hyperlinks.Add Address:="http://www.example.com/page", SubAddress:="location"
Все три дают одну и ту же проблему. Можно ли создать ссылку на определенное местоположение (идентификатор или имя привязки), а не только на веб-страницу? Буду благодарен за любую помощь.
Примечание: примеры кода неполные; для ясности я опустил параметры Anchor и TextToDisplay.
Версия Excel: 2010 (14.0.6126.5003) SP1
9 ответов
Это не проблема браузера. Приложения MS Office обрабатывают URL-адреса, заменяя знак # на "-" (%20 - это пробел).
Эта досадная проблема признается самой Microsoft. Цитировать с этой страницы:
Эти проблемы могут возникать, когда имя файла, на который вы создаете гиперссылку, содержит знак решетки (#).
ПРИМЕЧАНИЕ. Знак решетки является допустимым символом для использования в имени файла, но не допускается в гиперссылках в документах Office.
Их единственными обходными путями являются удаление # оскорбительного # или копирование и вставка URL-адреса из документа... совершенно нелепо, учитывая причину, по которой большинство людей используют #, состоит в том, чтобы облегчить пользователям поиск контента.
Попросите Microsoft улучшить это поведение, проголосовав здесь: https://office365.uservoice.com/forums/264636-general/suggestions/32273917-stop-mangling-urls-containing-a-so-we-can-link-t
Кажется, это проблема браузера, а не проблема Excel. Переход с Google Chrome на Internet Explorer решил эту проблему.
Спасибо всем за ваши предложения... просто сказать, что вы не нашли ту же проблему, что побудило меня искать в другом месте.
Мне удалось обойти это, используя%23 вместо знака # (хэштега | фунта). Мой URL теперь работает в Excel 2013. "Подсказка" показывает символ # в URL, но редактирование ссылки показывает%23.
http://www.example.com/page#location
не работает
http://www.example.com/page%23location
работает
К сожалению, в Excel я все еще сталкивался с проблемами с безопасными гиперссылками в кодировке URL.
Они будут работать один раз, а затем изменились на file://
гиперссылка после того, как вы нажали на нее один раз, и снова была сломана
Так что я использовал =Hyperlink()
функция и все было хорошо, потому что Excel не может изменить мою сцепленную строку URL в формуле.
Я выиграл...Нет
Когда файлы находятся в защищенном представлении, из-за настроек безопасности или если пользователь предварительно просматривает файл как вложение в Outlook, #
символ все еще превращается в %20-%20
Поскольку наш ИТ-отдел не позволил нам установить другой браузер, мы не можем сделать Internet Explorer браузером по умолчанию (так как он уже есть).
Сравнивая два компьютера, один из которых мне удалось сменить браузер по умолчанию и стандартную загрузку, я заметил, что в стандартной загрузке отсутствует следующая запись реестра.
Решение: сохранить как Office Hyperlink Fix.reg (и дважды щелкнуть)
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"Progid"="IE.HTTP"
После добавления его к стандартной загрузке (требуется для каждого пользователя) ссылки работали без проблем!
Это не все необходимые записи реестра, но этого было достаточно, чтобы IE снова запросил браузер по умолчанию и добавил остальные (HTTPS...).
Лучшее решение, которое мы нашли без изменения записей реестра вручную, - это сброс Internet Explorer в качестве браузера по умолчанию. Это сбрасывает связь URL, протокола и расширения и решает проблему.
После того, как вы это сделаете, даже если вы измените браузер по умолчанию на Firefox и вернете его обратно в IE, он больше не сломается.
Это решение "чище", чем игра в реестре, и было зарегистрировано как официальное решение в нашей компании.
Я вижу, что это старый пост, поэтому, возможно, мы все знаем ответ, но у меня была эта проблема, и я решил ее. Я использую Excel 2016, поэтому, возможно, команда Ms сделала исправление. Я просто добавил символ # в строку URL, а затем использовал функцию .SubAddress, чтобы добавить закладку в URL. например
Dim oCell as Range("A1") 'Change to correct cell range containing the Hyperlink
ThisWorkbook.followHyperLink oCell.HyperLink(1).Address & "#" &
oCell.HyperLink(1).SubAddress
Если проблема касается ссылок на порталы сервера Share Point, вы можете вырезать часть гиперссылки (в моем случае выделенная жирным шрифтом часть: Beginning_of_the_address /_layouts/15/start.aspx# /End_of_address).
У меня работает нормально (MSO 16 + SPS 2k16).
У меня был сотрудник с этой проблемой (в том числе %20-%20
ошибка) в Word 2010 вместо Excel.
Решено следующим образом:
В Internet Explorer:
- настройки интернета
- Вкладка программы
- Редактор HTML: убедитесь, что это не пусто
Вы можете создать гиперссылку в ячейке, просто набрав URL и нажав Enter. Excel распознает его как URL, если он имеет такие вещи, как
".Com"
и / или
"HTTP://"
Я попробовал твою проблему и не понял ее. Возможно, есть другая проблема с вашим URL. Возможно, вы захотите опубликовать более похожий URL на тот, который вы на самом деле используете (те же типы символов), что и в Excel 2010.