Как создать гиперссылку на определенные разделы HTML-файла в Excel?

8

У меня есть HTML-файл, который включает в себя якоря в нем. Я могу получить
file://<html_path>/<html_file>.html#<anchor_name>
доступ к определенному разделу через браузер, если я укажу имя привязки, поэтому, когда я пишу в адресной строке моего браузера, файл открывается и прокручивается до нужного раздела.

Если я помещаю ту же ссылку в HYPERLINKфункцию в Excel, она просто открывает веб-страницу, обрезает #деталь и не прокручивает до указанного раздела. Если я помещу ссылку на веб-страницу с якорной частью в HYPERLINKфункцию, она, похоже, будет работать правильно, поэтому http://ссылки с #не будут обрезаны и будут работать.

Поиск в Google возвращает это сообщение на форуме и несколько статей в КБ, в которых говорится, что хеш не может использоваться в имени файла в офисе, хотя это допустимый символ имени файла. На той же странице указано, что это было решено в Excel 2010, но я использую версию 2010, и это, по-видимому, все еще проблема.

Есть ли обходной путь к этому? Я намереваюсь связать каждую строку с отдельным разделом в целевом файле, и существует более 1000 строк, поэтому возможность разбить исходный HTML-файл на несколько или создать отдельные URL-адреса для каждого раздела и ссылку на них создаст беспорядок в файлы.

JohnoBoy
источник
Я не могу ответить на этот вопрос, так как сейчас я не могу выполнить тестирование, но тестировали ли вы с использованием кодировки, поэтому вместо «#» использовали «% 23»
HTDutchy
Я только что проверил, это не похоже на работу. В Excel появляется сообщение об ошибке «Не
удается
@terdon 'Pound sign / key' является действительным именем для #персонажа, см. статью WikiPedia , также обратите внимание на сообщение на форуме, и статьи из КБ, связанные с ним, используют то же имя
JohnoBoy
@JohnoBoy, так оно и есть. Я исправлен, извините. Не стесняйтесь откатить мою правку.
Terdon

Ответы:

2

Попробуй это. Для каждой строки вам понадобятся два столбца. Первый будет содержать название вашей закладки для каждой строки. Вторая будет содержать гиперссылку, указывающую на себя.

Чтобы вставить гиперссылки с самоссылкой для многих строк, запустите макрос следующим образом:

Sub AddHyperlinksPointingToOwnCell()

   For i = 1 To 100

   Range("A" & i).Select
   ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
       "Sheet1!A" & i, TextToDisplay:="Click Here!"

   ActiveCell.Offset(1, 0).Select

   Next i

End Sub

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

Sub GoToBookmark()

    Dim ThisRow As Integer
    Dim ThisCol As Integer
    Dim BookmarkName As String

    ThisRow = ActiveCell.Row
    ThisCol = ActiveCell.Column
    BookmarkName = Cells(ThisRow, ThisCol - 1).Value
        'This is looking in the cell to the left for the bookmark name

    If BookmarkName = "" Then
        Exit Sub
    End If

    Shell "C:\Program Files\Internet Explorer\IEXPLORE.EXE " & _
        "C:\PathRoot\Folder\filename.html#" & BookmarkName & ", vbNormalFocus"

End Sub

Наконец, вам нужно добавить событие Worksheet_FollowHyperlink для листа, содержащего ваш список:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    Run ("GoToBookmark")
End Sub

Надеюсь, это должно сделать это!

Энди Мор
источник
Я посмотрю на это и
сообщу
@JohnoBoy - это сработало для тебя?
Джонни Юта
Это было давно, я думаю, я вообще отказался от гиперссылок.
JohnoBoy
0

Вот еще одно решение для вас, если вы не хотите использовать кодирование VBA, вы все равно можете использовать функцию Excel «гиперссылка». Вот пошаговое руководство, чтобы сделать это.

онлайн-файл: Шаг 1: допустим, ваше имя файла: http://en.wikipedia.org/wiki/Intel_Core Шаг 2: теперь добавьте имена ваших якорей в A1: A4
Core_Duo
Core_Solo
Core_2_Duo
Core_i7
Шаг 3: в ячейку B2 введите это :

=HYPERLINK("http://en.wikipedia.org/wiki/Core_i3#"&A2,"A2")  

Шаг 4: нажмите и перетащите, чтобы подать заявку на остальные ячейки
Протестировано работает !!!

kamalam
источник
1
К сожалению, kamalam, оригинальный постер искал это для файлов, размещенных локально на диске C :. Если вы попробуете это снова, file://C:/это не сработает. Обидно, потому что было бы намного проще, если бы это сработало!
Анди Мох
Кроме того, это даже не работает в Интернете
Gerrat
-1

Если я хорошо понимаю ваш вопрос, то вот работа вокруг источника = Здесь ВРЕМЕННОЕ РЕШЕНИЕ Чтобы обойти эту проблему, используйте один из следующих методов. Способ 1

Переименуйте файл с именем, которое не содержит знак фунта, а затем отредактируйте или заново создайте гиперссылку.

Для получения дополнительной информации о том, как переименовать файл в Windows, см. Печатную документацию Windows или интерактивную справку.

Чтобы изменить гиперссылку, выполните следующие действия:

Для Office 2003 и более ранних версий Office: щелкните правой кнопкой мыши ячейку, содержащую гиперссылку проблемы. В появившемся контекстном меню укажите «Гиперссылка» и нажмите «Изменить гиперссылку». В поле Введите имя файла или веб-страницы введите имя файла, на который вы ссылаетесь. Если вы не знаете имя файла, нажмите «Файл» и найдите файл. Нажмите ОК.

Для программ Office 2007 и Office 2010: щелкните правой кнопкой мыши ячейку, содержащую гиперссылку проблемы, и выберите пункт Изменить гиперссылку. В поле Адрес введите имя файла, на который вы ссылаетесь. Если вы не знаете имя файла, используйте инструменты поиска в строке Искать в ..., чтобы найти файл. Выберите файл и нажмите кнопку ОК. Способ 2

Используйте команду Вставить как гиперссылку:

Для Office 2003 и более ранних версий: откройте документ, на который вы пытаетесь сослаться (который содержит знак # в имени). Скопируйте ячейку, на которую вы хотите сослаться. В документе в меню «Правка» выберите пункт «Вставить как гиперссылку».

Для программ Office 2007 и Office 2010: Откройте документ, на который вы пытаетесь связать. Это документ, который содержит знак # в имени. Скопируйте ячейку, на которую вы хотите сослаться. В своем документе щелкните ячейку, в которой вы хотите разместить гиперссылку. На вкладке «Главная страница» щелкните стрелку под «Вставить» в группе «Буфер обмена», а затем нажмите «Вставить как гиперссылку».

если вы используете код VBA, эта строка может оказаться полезной. Я протестировал ее. Она работает как в chrome, так и в firefox
ActiveSheet.Hyperlinks.Add Anchor: = Selection, Address: = "C: \ path \ to \ your \ file.htm" , SubAddress: = "nameOfYourAnchor", TextToDisplay: = "текст для отображения")

здесь nameOfYourAnchor без # Sym, например, если ваша ссылка C: / Users / [Пользователь] / Desktop / Intel Core - Википедия, бесплатная encyclopedia.htm # Core_i3, ваш код будет ( ActiveSheet.Hyperlinks.Add Anchor: = Выделение, Адрес: = "C: / Пользователи / Пользователь / Рабочий стол / Intel Core - Википедия, бесплатный encyclopedia.htm", SubAddress: = "Core_i3", TextToDisplay: = "text to display" )
надеюсь, что это помогло.

kamalam
источник
Проблема в том, что в имени файла нет знака решетки. Я использую знак фунта для ссылки на определенный раздел в файле
JohnoBoy
2
взгляните на последние два абзаца.
Камалам
@kamalam, на первый взгляд, это очень аккуратное решение. Однако я не могу заставить этот код работать? Можете ли вы опубликовать полный саб, который работает для вас, пожалуйста?
Анди Мохр
-1

Следующее обычно работает в Windows 7 с Excel 2007. Файл размещается вместе с электронной таблицей. Содержимое ячейки:

= HYPERLINK ("dump_faults_current_leg_bite.htm # BiteRec_000", "BITE record 1/35")

Здесь есть некоторые настольные ПК, у которых возникают проблемы с этой ссылкой, однако появляется ошибка «Не удается открыть указанный файл».

Toolman
источник