Ответ 1
Это проблема браузера, а не проблема Excel. Переключение с Google Chrome на Internet Explorer решило его.
Спасибо всем за ваши предложения... просто сказал, что вы не нашли ту же проблему, что и побудило меня искать в другом месте.
В Excel я могу создать гиперссылку на веб-страницу. Однако, если URL-адрес содержит символ #, Excel всегда преобразует хэш-знак в пространство-дефис, поэтому ссылка больше не работает. URL http://www.example.com/page#location становится 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"
Все три дают ту же проблему. Возможно ли создать ссылку на конкретное место (id или именованный якорь) не только на веб-страницу? Я был бы признателен за любую помощь.
Примечание: примеры кода неполны; для ясности, я опустил параметры Anchor и TextToDisplay.
Версия Excel: 2010 (14.0.6126.5003) SP1
Это проблема браузера, а не проблема Excel. Переключение с Google Chrome на Internet Explorer решило его.
Спасибо всем за ваши предложения... просто сказал, что вы не нашли ту же проблему, что и побудило меня искать в другом месте.
Это не проблема с браузером. Приложения 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
Самое лучшее решение, которое мы нашли, без ручного изменения записей в реестре, - это reset Internet Explorer, который будет браузером по умолчанию. Это сбрасывает ассоциации URL-адресов, протоколов и расширений и решает проблему.
Как только вы это сделаете, даже изменение браузера по умолчанию в Firefox и его изменение в IE не нарушит его снова.
Это решение является "более чистым", чем игра в реестре, и оно было зарегистрировано как официальное решение в нашей компании.
Вы можете создать гиперссылку в ячейке, просто введя URL-адрес и нажав enter. Excel распознает его как URL-адрес, если у него есть такие вещи, как
"ком"
и/или
"HTTP://"
Я попробовал вашу проблему и не получил ее. Возможно, есть и другие проблемы с вашим URL. Возможно, вы захотите опубликовать более похожий URL-адрес на тот, который вы используете (такие же типы символов). У меня также есть Excel 2010.
Мне удалось обойти это, используя% 23 вместо значка # (hashtag | фунт). Мой URL теперь работает в Excel 2013. "hovertext" показывает символ # в URL-адресе, но редактирование ссылки показывает% 23.
http://www.example.com/page#location
не работает
http://www.example.com/page%23location
работает
У меня был сотрудник с этой точной проблемой (включая ошибку %20-%20
) в Word 2010 вместо Excel.
Решено следующее:
В Internet Explorer:
К сожалению, в Excel я все еще сталкивался с проблемами с безопасными гиперссылками, закодированными в URL.
Они будут работать один раз, а затем перейдут на гиперссылку file://
после того, как вы нажмете ее один раз, и снова сломались.
Итак, я использовал функцию =Hyperlink()
, и все было хорошо, потому что Excel не может изменить мою конкатенированную строку URL в формуле.
Yay, я выиграю... nope
Когда файлы находятся в защищенном представлении, из-за настроек безопасности
или если пользователь просматривает файл как вложение в Outlook, символ #
по-прежнему превращается в %20-%20
Поскольку наш ИТ-отдел не позволяет нам устанавливать другой браузер, мы не можем сделать Internet Explorer браузером по умолчанию (поскольку он уже есть).
Сравнивая два компьютера, один из которых я смог изменить браузер по умолчанию и стандартную нагрузку, я заметил, что в стандартной загрузке отсутствует следующая запись реестра.
Решение: Сохранить как Офисная гиперссылка 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...).
Если проблема связана с ссылками на порталы сервера Share Point, вы можете вырезать часть гиперссылки (в моем случае это жирная часть: Beginning_of_the_address /_layouts/15/start.aspx#/End_of_address).
У меня отлично работает (MSO 16 + SPS 2k16).