Показать текстовую ссылку, чтобы открыть определенную страницу PDF из Excel - PullRequest
1 голос
/ 03 декабря 2010

Я нашел в сети код VBA, который открывает внутреннюю (PDF-файл) страницу документа PDF в IE (например, переходит к странице 8 файла PDF). Я хотел бы отобразить текст в ячейке, чтобы пользователь мог щелкнуть по нему (например, «Нажмите здесь, чтобы посмотреть»).

Проблема : в данный момент в ячейке отображается «0», и мне нужно перейти на панель функций и нажать [Enter], чтобы выполнить.

Версия Excel : 2003

Вызов функции :

=GoToPDFpage("S:\...x_2011.pdf",8)

Код VBA :

Function GoToPDFpage(Fname As String, pg As Integer)
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Navigate Fname & "#page=" & pg
.Visible = True
End With
End Function

: EDIT:

Мне удалось отобразить текст, но это по-прежнему не та ссылка, которую я хотел.

="Click to view" & GoToPDFpage("S:\...x_2011.pdf",8)

Спасибо за вашу помощь.

Ответы [ 3 ]

0 голосов
/ 05 декабря 2010

Если у вас нет сложной книги или рабочего листа, вы можете попробовать следующее:

Превратите ячейку «Нажмите для просмотра» в гиперссылку со следующими характеристиками.

  • Заставь его указывать на себя
  • Текст внутри ячейки всегда должен быть строкой Page = плюс число, в котором вы хотите открыть PDF-файл. Например: Page = 8

Затем перейдите в модуль workseet и вставьте следующий код:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    If Left(ActiveCell.Value, 4) = "Page" Then

        GoToPDFpage Range("A1").Value, Mid(ActiveCell.Value, 6)
        'This code asumes that the file address is writen in the cell A1

    End If
    '
End Sub
'

Приведенный выше код будет срабатывать при каждом запуске гиперссылки на листе.
Поскольку гиперссылка всегда указывает на себя, «Activecell.Value» всегда будет иметь номер страницы, которую вы хотите открыть.

Я предполагаю, что вы можете поместить адрес файла в ячейку A1. Вы можете изменить эту часть так, чтобы она указывала на любую другую ячейку. (включая: ячейку справа от текущей гиперссылки и т. д.).

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

Надеюсь, это поможет!


EDIT: Чтобы сделать каждую ссылку HLink на себя, вы можете выбрать все ячейки, на которые у вас есть ссылки, и затем выполнить следующую процедуру:

Sub RefHLink()
    Dim xCell As Range

    For Each xCell In Selection

        ActiveSheet.Hyperlinks.Add Anchor:=xCell, Address:="", SubAddress:= _
        xCell.Address, ScreenTip:="Click Here", TextToDisplay:="Page="
    Next xCell

End Sub
0 голосов
/ 29 сентября 2014

как насчет того, чтобы позволить Excel написать пакетный файл и запустить его?

* редактировать пути к pdf и AcroRd32.exe

Sub batfile()
  Dim retVal
  filePath = "path\pdf.bat"
  pg = 2
  Open filePath For Output As #1
  Print #1, "Start /Max /w " & Chr(34) & "Current E-book" & Chr(34) & " " & Chr(34) & "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" & Chr(34) & " /a " & Chr(34) & "page=" & pg & Chr(34) & "  " & Chr(34) & "H:\Documents\RPG\Dragonlance\New folder\Sample File.pdf" & Chr(34) & ""
  Close #1
  retVal = Shell(strFilePath)
End Sub
0 голосов
/ 03 декабря 2010

Попробуйте Меню-> Данные-> Проверка данных.На 2-й вкладке вы можете написать свое сообщение.

...