我试图在我的 Access 表单上创建一个按钮,允许用户查看与表单中的数据相关的相应页面(在这种情况下,零件编号显示在表单上,我想要按钮打开零件标准文件以显示该零件的蓝图/图表)
我尝试在文件路径末尾使用 Adobe 的页面参数 #page=pagenum,但这样做不起作用。
这是我的代码(基本,我知道),但我试图弄清楚该去哪里。出于显而易见的原因,我简单地压缩了我的文件路径 - 注意:这不是一个 URL,而是一个文件路径(如果这很重要)。
Private Sub Command80_Click()
Dim loc As String 'location of file
'loc = Me.FileLoc
loc = "G:\*\FileName.pdf#page=1"
Debug.Print loc
'Debug.Print Me.FileLoc
'Debug.Print Me.FileName
Application.FollowHyperlink loc
End Sub
这样可以吗?我将继续阅读其他用户的帖子,希望找到解决方案,如果找到解决方案,我会在此处注明。
谢谢!
更新
我找到了一种方法来做到这一点,只是我现在有一个小并发症。我的数据库将被许多用户 Access ,可能使用不同版本的 Acrobat,或位于不同的位置。这是我的工作代码:
Private Sub Command2_Click()
pat1 = """C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe"""
pat2 = "/A ""page=20"""
pat3 = """G:\*\FileName.pdf"""
Shell pat1 & " " & pat2 & " " & pat3, vbNormalFocus
End Sub
现在,这是我关心的问题。此代码从特定文件路径打开 AcroRd32.exe,如果我的用户将其存储在其他地方或具有不同的版本,则这将不起作用。有人对如何解决这个问题有建议吗?
再次感谢! :)
最佳答案
正确的方法可能是在系统注册表中查找 acrobat reader 可执行文件的位置。我发现这通常比它的值(value)更麻烦,特别是如果我对我的程序将安装的所有位置(例如在单个 Intranet 内)有一定的控制。通常我最终会使用我编写的这个函数:
'---------------------------------------------------------------------------------------
' Procedure : FirstValidPath
' Author : Mike
' Date : 5/23/2008
' Purpose : Returns the first valid path found in a list of potential paths.
' Usage : Useful for locating files or folders that may be in different locations
' on different users' computers.
' Notes - Directories must be passed with a trailing "\" otherwise the function
' will assume it is looking for a file with no extension.
' - Returns Null if no valid path is found.
' 5/6/11 : Accept Null parameters. If all parameters are Null, Null is returned.
'---------------------------------------------------------------------------------------
'
Function FirstValidPath(ParamArray Paths() As Variant) As Variant
Dim i As Integer
FirstValidPath = Null
If UBound(Paths) - LBound(Paths) >= 0 Then
For i = LBound(Paths) To UBound(Paths)
If Not IsNull(Paths(i)) Then
If Len(Dir(Paths(i))) > 0 Then
FirstValidPath = Paths(i)
Exit For
End If
End If
Next i
End If
End Function
该函数采用参数数组,因此您可以根据需要传递尽可能多或尽可能少的路径:
PathToUse = FirstValidPath("C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe", _
"C:\Program Files\Acrobat\Reader.exe", _
"C:\Program Files (x86)\Acrobat\Reader.exe", _
"C:\Program Files\Acrobat\12\Reader.exe")
pat1 = """" & PathToUse & """"
关于ms-access - 在VBA中打开特定页码的PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6361706/