通过VBA打开PDF页面 - 引用字段

时间:2011-06-16 13:52:32

标签: ms-access vba

我有一个PDF文件,其中包含部分编号,其中属于“标准”。我创建了一个数据库,以及一个名为Page Number的字段。现在我的代码打开指向页面的PDF,但在创建具有页码的字段后,我希望它读取字段并使用该页码作为参考,而不是指定实际的页码。 关于这个问题的任何帮助都会很棒。我的代码全部如下:

Private Sub ViewStandard_Click()

'open pdf at page #
  Dim pageNum As String
  Dim fileloc As String
  Dim bookmark As String

  pageNum = Me.Page
  fileloc =
  bookmark = 

  pat1 = """C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe"""

  pat2 = "/A ""page=pageNum"""

  pat3 = """fileloc"""

  Shell pat1 & " " & pat2 & " " & pat3, vbNormalFocus

  'fileloc = location of pdf
  'bookmark = fileloc & pagenum

End Sub

请注意,我的访问知识相当有限,我从同事那里得到了很多帮助。所以我不确定String命令是如何工作的。另外,我不确定如何在fileloc / bookmark(PDF页面)和pagenum中编码。

2 个答案:

答案 0 :(得分:1)

我不明白你在哪里获得pageNum和fileloc的值。您的代码显然是针对命令按钮的单击事件。在这种情况下,Me.Page指的是表单的属性。以下是Access的帮助有关的内容:

页面属性指定打印表单或报表时的当前页码。读/写

如果这是一种结合形式,它的记录源包括PAGE_NUMBER和File_Location领域,我想你应该为这些字段添加绑定文本框控件(txtPageNumber和txtFileLocation)。然后,当您构建要提供给Shell的字符串时,可以引用这些值(来自当前显示的记录)。

Private Sub ViewStandard_Click()
    Dim strReader As String
    Dim strShell As String

    strReader = "C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe"
    strShell = """" & strReader & """ /A ""page=" & Me.txtPageNumber & """ """ & _
        Me.txtFileLocation & """"
    Debug.Print "strShell: " & strShell 
    Shell strShell, vbNormalFocus
End Sub

我不确定我的所有引号都是正确的。 Debug.Print将允许您查看要求Shell执行的已完成字符串。您可以从立即窗口复制该字符串并将其粘贴到命令提示符窗口中进行测试,并根据需要进行调整。

此外,在您之前的问题中,您收到了有关Shell替代品的建议。我鼓励你花时间研究它们。

答案 1 :(得分:0)

Option Explicit
Option Compare Database

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Const SW_SHOWNORMAL As Long = 1
Private Const SW_SHOWMAXIMIZED As Long = 3


Private Sub Command0_Click()
    ShellExecute 0, "Open", "C:\Users\hp\Documents\Office Work\Shruti\DownloadForm16.pdf", vbNullString, "C:\", SW_SHOWNORMAL
End Sub