【问题标题】:Excel VBA and InternetExplorer causing errors on websiteExcel VBA 和 InternetExplorer 在网站上导致错误
【发布时间】:2009-12-07 18:19:00
【问题描述】:

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

【问题讨论】:

  • 好问题 - 也对看到解决方案不感兴趣。
  • 似乎如果我不控制 VBA 应用程序/电子表格,则我无法设置用户代理,也无法检测到它是由 VBA 生成的 IE 实例。我必须说服我的用户更改用户代理

标签: excel internet-explorer vba


【解决方案1】:

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

但是,如果您坚持尝试破坏用户的应用程序:)... 检查 DOM 的 Window.Visible 属性。这不是万无一失的,但很多网络爬虫只是在无形中“机器人”了 Internet Explorer 的一个实例。也可能不是没有设置cookie,它们只是被即时删除。如果您尝试使用 cookie 限制页面点击,那么您应该考虑一个基本事实,即任何存储在客户端的数据都会受到更改。尝试将此类信息存储在服务器端。如前所述,有些方法没有提交正确的标头,因此您可以检查它们,最后是流行的“Captcha”。当然,这些方法都不是万无一失的,它们都有一些缺点。

话虽如此,如果我学到了一件事,那就是人们会找到一种方法来做他们认为是他们的工作的事情。您可以根据需要尽可能多地锁定界面,但如果用户认为他们所做的任何事情都是他们完成工作所必需的,那么他们将非常有动力为您应用的任何“修复”找到解决方法。他们甚至可能会因为他们的努力而获得赞扬和认可。用户将继续这样做直到你满足他们认为他们有的需求

如果你真的想杀死应用程序,最好找出哪些需求没有得到满足,然后满足它。经理们不希望必须支持和维护 100 个不同的小应用程序,如果他们没有必要的话。如果有满足需求的“合法”无障碍方式,通常会使用它。为什么?每个人都时间紧迫,所以最简单的解决方案获胜。如果你让你的应用程序比你试图取消的应用程序更好,那么为什么还要为内部开发而烦恼呢?如果有借口,业务部门经理将很快指导他们的员工重返工作岗位。

【讨论】:

  • 我不是想“杀死”任何应用程序,也不是限制页面点击量。我什至不想阻止他们建造这些东西。我什至“称赞”了他们。 VBA 无法正确执行此操作。
  • 嗨,SWD,根据他们的实施,它应该可以正常工作。也许您可以发布他们正在使用的代码,我们可以帮助您调试它?
【解决方案2】:

在您的服务器上,您可以尝试检查 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"

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2017-01-03
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多