Показать текстовую ссылку, чтобы открыть определенную страницу PDF из Excel

Я нашел в Интернете код VBA, который открывает внутреннюю (общий диск) страницу документа 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

:РЕДАКТИРОВАТЬ:

Я смог отобразить текст, но это все еще не ссылка, как я хотел.

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

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


person Fiona    schedule 02.12.2010    source источник
comment
Привет Фиона, это может быть более простой способ удовлетворить ваши потребности. Возможно ли, чтобы ваши имена файлов и номера страниц находились в отдельных столбцах для каждой строки? Идея состоит в том, чтобы иметь кнопку «Нажмите здесь, чтобы просмотреть», а в столбце рядом с ней имя файла, а в следующем столбце — номер страницы.   -  person CaBieberach    schedule 15.12.2010


Ответы (3)


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

person CaBieberach    schedule 03.12.2010
comment
Спасибо за ваш вклад. Ваше предложение создает всплывающее поле. Я искал, могу ли я поместить текстовую ссылку в ячейку с надписью «Нажмите для просмотра». Когда пользователь нажмет на нее, Excel запустит указанную выше функцию и откроет страницу PDF. - person Fiona; 04.12.2010
comment
Хорошо, я смог отобразить текст, но это не ссылка. =Нажмите, чтобы просмотреть & GoToPDFpage(S:\...x_2011.pdf,8) Хотите иметь возможность щелкнуть этот текст, чтобы активировать функцию GoToPDFpage. Спасибо. - person Fiona; 04.12.2010

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

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

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

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

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. Вы можете изменить эту часть, чтобы она указывала на любую другую ячейку. (включая: ячейку справа от текущей гиперссылки и т. д.).

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

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


РЕДАКТИРОВАТЬ: Чтобы сделать каждую ссылку 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
person CaBieberach    schedule 05.12.2010
comment
Спасибо. Я попробую это. На самом деле у меня есть столбец из ‹ 60 строк, каждая из которых нуждается в гиперссылке на разные страницы PDF. - person Fiona; 07.12.2010
comment
Затем вы можете поместить путь к файлу PDF справа от каждой ячейки, а затем изменить эту строку: Range(A1).Value на следующую строку: Activecell.Offset(0,1).Value. - person CaBieberach; 07.12.2010
comment
Извините, наконец-то нашлось время взглянуть на это. Я пробовал это: =HYPERLINK(GoToPDFpage(S:\HP\HP Analyst\Kori\EOC\2011\kpif_20d_Rx_POP3_2011.pdf,8), нажмите, чтобы просмотреть EOC)... что, кажется, работает, за исключением того, что файл открывается дважды. Я не вставлял код, который вы предложили выше, - только мой исходный код. Почти готово!! Спасибо! - person Fiona; 14.12.2010
comment
Я попытался вставить ваш код, но не смог понять, как сделать ссылку на гиперссылку. - person Fiona; 15.12.2010
comment
Я отредактировал сообщение, чтобы у вас была процедура для ссылки на гиперссылки. - person CaBieberach; 15.12.2010

как насчет того, чтобы позволить 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
person boojiboy16    schedule 28.09.2014