【问题标题】:Open Hyperlinks in Access在 Access 中打开超链接
【发布时间】:2015-11-07 17:54:26
【问题描述】:

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

【问题讨论】:

    标签: vba ms-access hyperlink listbox


    【解决方案1】:

    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
    

    【讨论】:

    • 我得到了所有要编译的东西,但是当我尝试双击结果时没有任何反应。我没有收到任何错误,文件也没有打开。关于我可能做错了什么的任何想法?
    • 它正在工作,但是当我单击链接时,我收到运行时错误 94 - 无效使用空值。它抱怨 Call fHandleFile(Me.lstManResults.Column(1))
    • @JB28 请显示 lstManResults 的行源。您的手册表中的每个文件是否都输入了文件路径?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 2020-09-13
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多