【问题标题】:Getting return values from an embedded Internet explorer从嵌入式 Internet Explorer 获取返回值
【发布时间】:2010-01-20 17:18:13
【问题描述】:

我知道如何从 VBA 应用程序中打开 Internet Explorer。但是如何从正在运行的资源管理器中获取“返回”值到 VBA 应用程序。例如让我们假设我尝试访问 http://page_not_there 并返回错误 400

如何在我的 VBA 应用程序中获取此值并采取相应措施。非常欢迎任何提示或链接或编程示例

可以进行精细编辑。所以顺序是: 信息被发送,我得到一个 HTML 字符串,它可以在 IE 中用于签署文档。当然,为此必须在 IE 中单击一下,但最后如果签名成功,我会得到一种“反馈”,我需要这个“反馈”来知道我是否可以继续。

我已经关闭了我的 windows 盒子,所以请谨慎使用他的盒子。我是这样启动IE的

set ie = CreateObject("InternetExplorer.Application")
ie.navigate2 "to_where_I_want"

就是这样。

然后我得到一个页面,其中运行 Java 小程序以对选定的 URL 进行签名 上面(“to_where_I_want”)我那里有几个按钮,点击签名后我必须输入我的 PIN,然后我对 IE Explorer 的输出感兴趣。

据我了解,我最好创建一个带有 Web 控件的表单并将其用于浏览和签名

问候 弗里德里希

【问题讨论】:

  • 我认为这取决于您如何从 VBA 加载 Internet Explorer。如果您包含加载 IE 的代码,这将有助于获得更快的响应。

标签: internet-explorer ms-access vba


【解决方案1】:

以下是有关获取页面状态的一种方法的一些说明。

   Dim http As Object
   Dim xmlhttp As Object

       Set http = CreateObject("MSXML2.ServerXMLHTTP.4.0")
       Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")

       On Error Resume Next

       xmlhttp.Open "GET", url, False
       ''This alternative can return status 405 in some cases
       ''xmlhttp.Open "HEAD", url, False
       xmlhttp.Send ""

       ''You can get the status of the page
       Status = xmlhttp.Status

       If Err.Number <> 0 Or Status <> 200 Then
           IsLink = False
       Else
           IsLink = True
       End If

       Set xmlhttp = Nothing

编辑:一些注释重新评论

假设有一个名为 WBForm 的表单和一个名为 WB 的控件,它是一个 Microsoft Web Browser 控件:

 ''Navigate to a non-existent page 
 Forms!WBForm!WB.Navigate "http://lessthandot.com/somepage.htm"
 ''Title of the page
 MsgBox Forms!WBForm!WB.Document.Title

在上述情况下,标题将包含“HTTP 404 Not Found”。也可以使用各种元素来阅读文档。

The document object model Scripting with Elements and Collections

【讨论】:

  • 这不是从嵌入式 IE webbrowser 控件获取 HTTP 状态代码,而是创建一个 XML Http Request 对象并从中获取状态代码。完全不同的东西。
  • 虽然这不是我们所要求的,但它在 VBA 中有效。
  • @Remou 的答案实际上更好,因为您不必在浏览器控件中显示结果即可使用它。在我看来,最初的问题是有缺陷的,因为它赋予了浏览器对直接处理结果的控制权。
  • 请问有什么缺陷?啊,我明白了,我刚刚提到了状态码。看来我无法编辑我的问题。所以我们开始:浏览器被调用是因为签署了一个文档。因此,仅仅“肇事逃逸”是不够的,必须找出发生了什么。如果您只想获取一个页面并且它是返回值,那么上面的代码就可以工作。所以它没有回答我的问题,因此我可以随意投反对票。
  • 对不起,我不能修改我上面的评论。我投了赞成票,因为如果我不必对正在加载的页面做任何工作,这将是可行的方法。不幸的是,我似乎无法编辑我原来的问题来澄清它。所以它必须在评论中。我需要在浏览器中签署一份文件,最后需要某种方式来检查此签署是否成功。
猜你喜欢
  • 1970-01-01
  • 2018-05-04
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 2018-03-05
  • 1970-01-01
  • 2014-09-10
相关资源
最近更新 更多