Internet explorer 如何使MS Access在现有IE上下文中打开超链接

Internet explorer 如何使MS Access在现有IE上下文中打开超链接,internet-explorer,ms-access,Internet Explorer,Ms Access,我有一个MS Access 2007数据库,其中一个字段是指向需要验证的网站URL的超链接。从MS Access打开超链接时,Internet Explorer要求用户在每次打开超链接时重新验证,即使用户已登录到网站 当从MS Outlook 2007或“开始”菜单中的“运行”对话框打开同一超链接,并且用户已登录到网站时,该超链接将按预期打开,而不会强制用户重新验证。为什么MS Access 2007的表现与MS Outlook 2007不同,以及(在某种形式上)我如何解决此问题?我找到了解决此

我有一个MS Access 2007数据库,其中一个字段是指向需要验证的网站URL的超链接。从MS Access打开超链接时,Internet Explorer要求用户在每次打开超链接时重新验证,即使用户已登录到网站


当从MS Outlook 2007或“开始”菜单中的“运行”对话框打开同一超链接,并且用户已登录到网站时,该超链接将按预期打开,而不会强制用户重新验证。为什么MS Access 2007的表现与MS Outlook 2007不同,以及(在某种形式上)我如何解决此问题?

我找到了解决此问题的方法。在数据库的VBA代码中,我添加了以下函数:

Public 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

Public Function OpenURL(theURL as String)
    ShellExecute Screen.ActiveForm.hWnd, "open", theURL, "", "", vbNormalFocus
End Function
在我的表单代码中,我只需调用OpenURL,如下所示:

OpenURL HyperlinkPart(Me![URL], acFullAddress)

不确定它是否相关,但您在谈论什么类型的身份验证?e、 g.基于会话cookie还是Windows身份验证?您可以使用process explorer查看Access生成的IE进程以及按您所需工作的IE进程,并查看它们是否有任何不同之处(例如命令行参数)。我猜想Access出于某种原因正在web服务器上启动新会话,而Outlook则没有。我无法解释为什么会这样。如果确实是这样,那么所讨论的网站必须编程为每次启动新会话时都需要登录。一些网站允许使用cookies保留登录,但显然这一个不允许。不幸的是,我不认为这是一个可接受的解决方案,因为它需要很多额外的努力才能使其表现得像一个超链接。我不明白为什么微软让Access处理链接的方式不同于其他任何Office应用程序!我不会说这需要“很多”额外的努力,假设您在表单上显示超链接,您只需将文本框格式化为超链接,并将
OpenURL
调用添加到
OnClick
事件中,然后它会自行处理。你没有超链接的右键点击功能,但是什么时候你真的需要这些功能呢+从我这里得到1。