【问题标题】:VBA CreateObject("Shell.Application").Open strURL does not workVBA CreateObject("Shell.Application").Open strURL 不起作用
【发布时间】:2020-04-02 13:41:21
【问题描述】:

我遇到了一个奇怪的 VBA 问题:有一个包含有效 URL 的字符串变量 strURL

CreateObject("Shell.Application").Open strURL                ' does *not* work

CreateObject("Shell.Application").Open strURL & vbNullString ' works

虽然“工作”意味着按预期打开具有给定 URL 的浏览器。 代码驻留在 Access(当前 Office 365 版本)中的未绑定表单模块中。

虽然我找到了解决方法,但我真的很想了解原因(并向可能遇到相同问题的其他人留下提示)!

【问题讨论】:

  • Shell 有时更喜欢变体而不是(例如)字符串,所以如果你有字符串,请尝试将 strURL 声明为 Variant。
  • 已确认:将strURL 声明为变体按预期工作。如果我声明 strURL & vbNullString!,VBA 是否会在我的解决方法中将类型转换为 Variant?
  • 我不能确定为什么连接 vbNullString 使其“可接受” - TypeName(s & vbNullString) 其中 s 被声明为 String 仍然输出“String”
  • @Tim Williams:好的。也许您想发布您的建议(将变量声明为 Variant 作为答案,我可以接受。虽然我们不知道这个烂摊子的背景,但我认为这足以帮助其他人防止我运行的错误进入。

标签: vba ms-access


【解决方案1】:

基于 Ron deBruin 在他的页面上描述使用 Shell 解压缩的注释:

https://www.rondebruin.nl/win/s7/win001.htm

Shell 有时更喜欢变体而不是(例如)字符串,因此,如果您将 strURL 声明为 Variant,请尝试将其声明为 String

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多