【问题标题】:Display text link to open specific PDF page from Excel显示文本链接以从 Excel 打开特定的 PDF 页面
【发布时间】:2011-05-19 10:45:57
【问题描述】:

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

问题:当前单元格显示'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)

感谢您的帮助。

【问题讨论】:

  • 嗨 Fiona,这可能是解决您需求的一种更简单的方法。您是否可以将文件名和页码放在每一行的单独列中?这个想法是有一个“单击此处查看”按钮,在它旁边的列中是文件名,在下一列中是页码。

标签: excel vba pdf excel-2003


【解决方案1】:

让excel写一个批处理文件然后运行怎么样?

*编辑 pdf 和 A​​croRd32.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

【讨论】:

    【解决方案2】:

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

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

    • 让它指向自己
    • 单元格内的文本必须始终是字符串 Page= 加上您要打开 pdf 的数字。例如:页=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
    

    【讨论】:

    • 谢谢。我会试试这个。我实际上有一列
    • 然后您可以将pdf文件路径放在每个单元格的右侧,然后将这一行更改为:"Range("A1").Value" 与以下行:"Activecell.Offset(0 ,1).值”。
    • 不好意思,终于有时间看这个了。我试过这个: =HYPERLINK(GoToPDFpage("S:\HP\HP Analyst\Kori\EOC\2011\kpif_20d_Rx_POP3_2011.pdf",8), "Click to view EOC")... 这似乎工作,除了它打开归档两次。我没有插入您上面建议的代码——只是我的原始代码。差不多了!!谢谢!
    • 我尝试插入您的代码,但无法弄清楚如何使超链接引用本身。
    • 我编辑了帖子,所以你有一个程序来引用超链接。
    【解决方案3】:

    尝试菜单->数据->数据验证。在第二个标签中,您可以编写您的消息。

    【讨论】:

    • 感谢您的意见。您的建议会创建一个弹出字段。我正在寻找是否可以在显示“单击查看”的单元格中放置一个文本链接。当用户点击它时,Excel会运行上面的函数并打开PDF页面。
    • 好的,我可以显示文本,但它不是链接。 ="点击查看" & GoToPDFpage("S:\...x_2011.pdf",8) 希望能够点击该文本来触发GoToPDFpage功能。谢谢。
    猜你喜欢
    • 2014-01-01
    • 2012-04-30
    • 2015-09-26
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多