显示从Excel打开特定PDF页面的文本链接

显示从Excel打开特定PDF页面的文本链接,excel,vba,pdf,excel-2003,Excel,Vba,Pdf,Excel 2003,我在网上发现了一个VBA代码,它在IE中打开了一个内部(共享驱动器)PDF文档页面(例如,转到PDF文件的第8页)。我想在单元格中显示文本供用户单击(例如“单击此处查看”) 问题:单元格当前显示“0”,我必须转到功能栏并点击[Enter]执行 Excel版本:2003 函数调用: =GoToPDFpage("S:\...x_2011.pdf",8) Function GoToPDFpage(Fname As String, pg As Integer) Set IE = CreateObjec

我在网上发现了一个VBA代码,它在IE中打开了一个内部(共享驱动器)PDF文档页面(例如,转到PDF文件的第8页)。我想在单元格中显示文本供用户单击(例如“单击此处查看”)

问题:单元格当前显示“0”,我必须转到功能栏并点击[Enter]执行

Excel版本:2003

函数调用

=GoToPDFpage("S:\...x_2011.pdf",8)
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
VBA代码

=GoToPDFpage("S:\...x_2011.pdf",8)
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)

谢谢您的帮助。

尝试菜单->数据->数据验证。在第二个选项卡中,您可以编写信息。

如果您没有高度复杂的工作簿/工作表,您可以尝试以下操作:

将“单击查看”单元格变成具有以下特征的超链接

  • 让它指向自己
  • 单元格内的文本必须始终是字符串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

让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

谢谢你的意见。您的建议将创建一个弹出字段。我想看看是否可以在单元格中添加一个文本链接,上面写着“点击查看”。当用户单击它时,Excel将运行上面的功能并打开PDF页面。好的,我可以显示文本,但它不是链接=“单击查看”&GoToPDFpage(“S:\…x_2011.pdf”,8)希望能够单击该文本以触发GoToPDFpage函数。谢谢,谢谢。我试试这个。实际上,我有一个<60行的列,每个行都需要一个指向不同PDF页面的“超链接”。然后你可以将PDF文件路径放在每个单元格的右侧,然后将这一行:“Range(“A1”).Value”改为下面一行:“Activecell.Offset(0,1).Value”。很抱歉,终于有时间来看看这个了。我试过这个:=超链接(GoToPDFpage(“S:\HP\HP Analyst\Kori\EOC\2011\kpif\u 20d\u Rx\u POP3\u 2011.pdf”,8),“点击查看EOC”)。。。除了打开两次文件外,它似乎可以工作。我没有插入您上面建议的代码,只是插入了我的原始代码。快到了!!谢谢我试着插入你的代码,但却不知道如何做超链接引用。我编辑了这个帖子,所以你有一个引用超链接的过程。嗨,菲奥娜,这可能是解决你的需要的一个更简单的方法。您是否可以将文件名和页码分别放在每行的不同列中?这个想法是有一个“点击这里查看”按钮,在它旁边的列中有文件名,在下一列中有页码。