Excel VBA和InternetExplorer在网站上导致错误

时间:2009-12-07 18:19:00

标签: excel internet-explorer vba

我有一些“聪明”的用户编写了一个excel电子表格,可以在我们的Intranet /时间表上自动完成他们的一些任务。似乎创建的Internet Explorer实例并没有做我希望浏览器做的所有事情,例如设置cookie。有没有办法检测用户是否使用Internet Explorer的VBA com对象实例访问网站?我无法阻止用户构建创意解决方案,但我希望能够处理它们。 感谢

2 个答案:

答案 0 :(得分:1)

有些事情会浮现在脑海中。首先,除非有人访问您不打算公开的受限信息或网页抓取数据,通常最好以网站正常工作的方式更正网站,但用户仍然可以使用VBA访问网站。 VBA是许多企业的重要生产力工具,可以让人们灵活地“扩展”网站,以满足可能不适合开发请求的利基需求。

但是,如果你坚持试图打破用户的应用程序:)...检查DOM的Window.Visible属性。这并不确定,但很多网络浏览器只是“无形地”自动化“Internet Explorer”实例。它也可能不是没有设置cookie,它们只是被动态删除。如果您尝试使用cookie限制页面命中,那么您应该考虑存储客户端的任何数据都可以更改的基本事实。尝试在服务器端存储此类信息。如前所述,某些方法不提交正确的标题,因此您可以检查这些标题,最后有流行的“Captcha”。当然,这些方法都不是万无一失的,它们都有一些缺点。

所有这一切,如果我学到了一件事,那就是人们会找到一种方法来做他们认为是他们工作的事情。您可以根据需要锁定界面,但如果用户认为他们正在做的事情是他们完成工作所必需的,那么他们将非常积极地找到适用于您应用的任何“修复”的解决方法。他们甚至可能会为他们的努力赢得赞誉和认可。用户将继续执行此操作,直到您满足他们认为具有的需求为止。

如果您真的想要杀死该应用,最好确定哪些需求未得到满足,并满足它。管理人员不希望拥有来支持和维护100个不同的小应用程序(如果他们不需要)。如果需要满足“合法”无障碍的方式,通常会使用它。为什么?每个人都有时间紧迫,所以最简单的解决方案胜出。如果你使你的应用程序比你试图破坏的应用程序更好,那么为什么要在内部开发中烦恼呢?如果有理由,业务部门经理会指导员工快速恢复业务。

答案 1 :(得分:0)

在您的服务器上,您可以尝试检查RequestHeader中的UserAgent字符串。这可以让您区分标准IE和Excel VBA - 取决于您的高级用户如何做到这一点。您可以要求您的用户将他们发送的UserAgent字符串设置为已知值。

示例:

Dim oHTTP As WinHttp.WinHttpRequest
Set oHTTP = New WinHttp.WinHttpRequest
oHTTP.Open Method:="GET", url:="http://stackoverflow.com/", async:=False
oHTTP.setRequestHeader "User-Agent", "ExcelVBA-UserApp"

另外,为什么不为您的Excel用户设置单独的访问URL。或者创建一个简单的RESTFul API供他们使用。有可能做到这一点 - 尽量保持简单易维护。

您的“聪明”用途可以尝试在SO中发布问题 - 确实存在比您的问题建议更好地自动化IE的功能。

相关问题