在 Access 中打开超链接

Open Hyperlinks in Access

我有 table 的产品,其中有特定产品用户手册的 pdf 文件。我将模型名称及其文件路径存储在我的产品 table(在 Access 中)中。我在 Access 中创建了一个表单,允许用户按产品名称搜索并缩小文件数量并在列表框中显示搜索结果。然而,我最大的问题是打开实际的 PDF。它打开文件,但我必须准确存储文件路径,并且文件路径很长。有没有一种方法可以在不使用 Followhyperlink 命令的情况下打开 PDF 超链接?或者有没有一种方法可以在我的列表框中只显示 pdf 的文件名而不是整个路径名?如果我更改我的产品 table 中的显示文本,它不会打开超链接,我会收到错误消息。任何帮助将不胜感激!

Application.FollowHyperLink() 存在安全问题,尤其是在打开网络驱动器上的文件时。参见例如这里:http://blogannath.blogspot.de/2011/04/microsoft-access-tips-tricks-opening.html

更好的方法是 ShellExecute() API 函数。 基本上它看起来像这样(从 http://access.mvps.org/access/api/api0018.htm 修剪):

' This code was originally written by Dev Ashish.
' http://access.mvps.org/access/api/api0018.htm

Private Declare Function apiShellExecute 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

Public Const WIN_NORMAL = 1         'Open Normal
Private Const ERROR_SUCCESS = 32&


Public Function fHandleFile(stFile As String) As Boolean

    Dim lRet As Long

    lRet = apiShellExecute(hWndAccessApp(), "Open", stFile, vbNullString, vbNullString, WIN_NORMAL)

    If lRet > ERROR_SUCCESS Then
        ' OK
        fHandleFile = True
    Else
        Select Case lRet
            ' Handle various errors
        End Select
        fHandleFile = False
    End If

End Function

现在为您的列表框: 将其设置为 2 列,第一列是模型名称,第二列是文件路径。 将第二列的列宽设置为0,这样就看不见了。

然后在双击事件中,使用第二列(文件路径)调用 fHandleFile:

Private Sub lstManuals_DblClick(Cancel As Integer)

    Call fHandleFile(Me.lstManuals.Column(1))

End Sub