Jak mogę utworzyć hiperłącze do określonych sekcji pliku HTML w programie Excel?

8

Mam plik HTML, który zawiera w sobie kotwice. Mogę dostać się do określonej sekcji za pośrednictwem przeglądarki, jeśli podam nazwę kotwicy, więc kiedy piszę
file://<html_path>/<html_file>.html#<anchor_name>
w polu adresu przeglądarki, plik otwiera się i przewija do właściwej sekcji.

Jeśli umieszczę ten sam link w HYPERLINKfunkcji w programie Excel, link po prostu otwiera stronę internetową, przycinając #część i nie przewija do określonej sekcji. Jeśli umieszczę link do strony internetowej z częścią zakotwiczoną w HYPERLINKfunkcji, wydaje się, że działa poprawnie, więc http://linki z #nie zostaną przycięte i nadal będą działać.

Wyszukiwanie w Google zwraca ten post na forum i kilka artykułów z KB, które stwierdzają, że skrótu nie można użyć w nazwie pliku w biurze, mimo że jest to prawidłowy znak nazwy pliku. Ta sama strona twierdzi, że problem został rozwiązany w programie Excel 2010, ale używam wersji 2010 i najwyraźniej nadal jest to problem.

Czy istnieje obejście tego problemu? Zamierzam połączyć każdy wiersz z inną sekcją w pliku docelowym, a jest tam ponad 1000 wierszy, więc opcja podzielenia oryginalnego pliku HTML na wiele lub wygenerowania oddzielnych adresów URL do każdej sekcji i link do zamiast tego spowodowałby bałagan akta.

JohnoBoy
źródło
Nie mogę odpowiedzieć na to pytanie, ponieważ nie mogę teraz przetestować, ale czy testowałeś przy użyciu kodowania, więc używając „% 23” zamiast „#”
HTDutchy
Właśnie to sprawdziłem, wydaje się, że to nie działa. Program Excel wyświetla komunikat o błędzie „Nie można otworzyć określonego pliku”
JohnoBoy
@terdon „Znak / klucz funta” jest prawidłową nazwą #postaci, zobacz artykuł na WikiPedia , zauważ również post na forum, a artykuły z KB powiązane używają tej samej nazwy
JohnoBoy
@JohnoBoy, tak jest. Przykro mi, poprawiam się. Zapraszam do wycofania mojej edycji.
terdon

Odpowiedzi:

2

Spróbuj tego. Do każdego wiersza potrzebne są dwie kolumny. Pierwszy będzie zawierał nazwę twojej zakładki dla każdego wiersza. Drugi będzie zawierał hiperłącze wskazujące na siebie.

Aby wstawić hiperłącza z odnośnikami do wielu wierszy, uruchom makro w następujący sposób:

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

Teraz potrzebujesz subwoofera, aby otworzyć przeglądarkę we właściwej lokalizacji. Edytuj to, aby ścieżki plików i przeglądarki były poprawne:

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

Na koniec musisz dodać zdarzenie Worksheet_FollowHyperlink dla arkusza zawierającego listę:

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

Mam nadzieję, że to powinno wystarczyć!

Andi Mohr
źródło
Przyjrzę
@JohnoBoy - czy to działało dla Ciebie?
Johnny Utahh
To było dawno temu, wydaje mi się, że całkowicie zrezygnowałem z hiperłączy.
JohnoBoy
0

Oto inne rozwiązanie dla Ciebie, jeśli nie chcesz używać kodowania VBA, nadal możesz użyć funkcji Excel „hiperłącze”. Oto przewodnik krok po kroku, jak to zrobić.

plik online: Krok 1: powiedzmy, że twoja nazwa pliku to: http://en.wikipedia.org/wiki/Intel_Core Krok 2: teraz dodaj swoje nazwy kotwic w A1: A4
Core_Duo
Core_Solo
Core_2_Duo
Core_i7
Krok 3: w komórce B2 wpisz to :

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

Krok 4: kliknij i przeciągnij, aby zastosować do pozostałych komórek
Testowane działanie !!!

kamalam
źródło
1
Niestety kamalam, oryginalny plakat chciał to zrobić dla plików hostowanych lokalnie na dysku C:. Jeśli spróbujesz ponownie, użycie file://C:/tego nie zadziała. Szkoda, bo byłoby o wiele łatwiej, gdyby to zadziałało!
Andi Mohr
To nawet nie działa w Internecie
Gerrat,
-1

Jeśli dobrze rozumiem twoje pytanie, oto praca wokół źródła = tutaj Obejście problemu Aby obejść ten problem, użyj jednej z następujących metod. Metoda 1

Zmień nazwę pliku na nazwę, która nie zawiera znaku funta, a następnie edytuj lub odtwórz hiperłącze.

Aby uzyskać więcej informacji na temat zmiany nazwy pliku w systemie Windows, zobacz drukowaną dokumentację systemu Windows lub pomoc online.

Aby edytować hiperłącze, wykonaj następujące kroki:

W przypadku pakietu Office 2003 i wcześniejszych wersji pakietu Office: Kliknij prawym przyciskiem myszy komórkę zawierającą hiperłącze. W wyświetlonym menu skrótów wskaż polecenie Hiperłącze i kliknij opcję Edytuj hiperłącze. W polu Wpisz nazwę pliku lub strony internetowej wpisz nazwę pliku, z którym się łączysz. Jeśli nie znasz nazwy pliku, kliknij opcję Plik i przejdź do pliku. Kliknij OK.

W przypadku programów Office 2007 i Office 2010: Kliknij prawym przyciskiem myszy komórkę zawierającą problem z hiperłączem, a następnie wskaż polecenie Edytuj hiperłącze. W polu Adres wpisz nazwę pliku, z którym się łączysz. Jeśli nie znasz nazwy pliku, użyj narzędzi wyszukiwania w wierszu Szukaj w ..., aby zlokalizować plik. Wybierz plik, a następnie kliknij przycisk OK. Metoda 2

Użyj polecenia Wklej jako hiperłącza:

W przypadku pakietu Office 2003 i wcześniejszych wersji: Otwórz dokument, do którego próbujesz utworzyć łącze (który zawiera znak # w nazwie). Skopiuj komórkę, z którą chcesz połączyć. W dokumencie w menu Edycja kliknij polecenie Wklej jako hiperłącze.

W przypadku programów Office 2007 i Office 2010: Otwórz dokument, do którego próbujesz utworzyć łącze. To jest dokument, który zawiera znak # w nazwie. Skopiuj komórkę, z którą chcesz połączyć. W dokumencie kliknij komórkę, w której ma się pojawiać hiperłącze. Na karcie Narzędzia główne kliknij strzałkę poniżej Wklej w grupie Schowek, a następnie kliknij Wklej jako hiperłącze

jeśli używasz kodu VBA, ta linia może być pomocna. Przetestowałem go. działa zarówno w chrome, jak i firefox
ActiveSheet.Hyperlinks.Add Anchor: = Selection, Address: = "C: \ path \ to \ your \ file.htm" , SubAddress: = "nameOfYourAnchor", TextToDisplay: = "tekst do wyświetlenia")

tutaj nameOfYourAnchor bez # Sym na przykład, jeśli twój link to C: / Users / [User] / Desktop / Intel Core - Wikipedia, darmowa encyklopedia.htm # Core_i3 twoim kodem będzie ( ActiveSheet.Hyperlinks.Add Anchor: = Wybór, adres: = "C: / Users / User / Desktop / Intel Core - Wikipedia, darmowa encyklopedia.htm", podadres: = "Core_i3", TextToDisplay: = "tekst do wyświetlenia" )
mam nadzieję, że to pomogło.

kamalam
źródło
Problem polega na tym, że w nazwie pliku nie ma znaku funta. Używam znaku funta, aby połączyć się z określoną sekcją w pliku
JohnoBoy,
2
spójrz na dwa ostatnie akapity.
kamalam
@kamalam, na powierzchni jest to bardzo miłe rozwiązanie. Jednak nie mogę uruchomić tego kodu? Czy możesz napisać pełny sub, który działa dla Ciebie, proszę?
Andi Mohr
-1

Poniższe ogólnie działa w systemie Windows 7 z programem Excel 2007. Plik jest kolokowany z arkuszem kalkulacyjnym. Zawartość komórki:

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

Istnieją jednak niektóre komputery stacjonarne, które mają problem z tym linkiem, jednak pojawia się błąd „Nie można otworzyć określonego pliku”.

Toolman
źródło