【问题标题】:VBA compatibility issues: 64-bit Windows7 (MSINET missing) and Trim function compatibility issuesVBA 兼容性问题:64 位 Windows7(缺少 MSINET)和 Trim 函数兼容性问题
【发布时间】:2012-07-12 10:25:19
【问题描述】:

我正在尝试将在 Windows XP 32 位上运行的 VB Excel 应用程序升级到 Windows 7 64 位操作系统。有两个问题会影响这种操作。我发现这些话题并不少见。

  1. VBA 脚本必须连接到需要 Microsoft Internet 传输协议 6.0 (SP 6.0) - MSINET 在 System32 目录中注册的服务器。不幸的是,上述库仅适用于 32 位操作系统,并且没有可用于 64 位的版本。我尝试导入参考列表:这似乎可行,但是一旦我重新启动应用程序,就找不到 dll(只是一个 ocx 文件 - Active X)。显然 dll 无法通过 regsvr32 应用程序注册。在 64 位版本的 Windows 上是否有类似于 MSINET 的东西?

  2. 我发现的第二个问题与上一个无关。应用程序需要解析删除空格的输入字符串。旧的 VBA 使用 TRIM,我想我不必对其进行任何更改。但是编译操作会导致以下错误:“编译错误:找不到项目或库”。没有缺少任何引用(MSINET 除外)。

我在 64 位 Windows 7、Office 2010、microsoft.office.interop.excel.dll 14 上安装。 谢谢

【问题讨论】:

  • 快速提问。 Office 是 32 位还是 64 位?

标签: vba excel msinet


【解决方案1】:
  1. 32 位软件在 64 位系统上运行良好。你不想要一个 64 位的 ocx,无论如何你都无法使用它。 Google 上有很多关于如何在 64 位 Windows 7 上注册 32 位 ocx 的手册,例如 this one
  2. 一旦您修复了缺失的 ocx 引用,缺失的 trim 函数就会自行修复。同样,您可以通过搜索 find this out yourself

但是,如果您有 64 位的 office,您将根本无法使用 msinet 控件,并且在您删除对 msinet 的引用之前,trim 功能将不会重新出现。

【讨论】:

  • 没关系。我已经在 64 位 Windows 上注册了 32 位 ocx。但是,这并不能解决问题。 VBA 应用程序希望在 System32 中找到 dll/ocx,而 regsvr32 不允许在那里执行任何注册。
  • @Gionata VBA 应用程序不能期望在给定路径上找到 ocx。这就是您在系统中注册它的原因。你告诉系统你把它放在哪里,然后应用程序会询问系统从哪里得到它。 dll 的物理路径与应用程序无关。
  • 我已尝试按照系统预期路径注册额外的 ocx/dll。根据 64 位架构,Windows 需要新安装到 /sysWoW64 目录。不幸的是,VBA 应用程序似乎忽略了 ocx 实际路径!有什么建议吗?
【解决方案2】:

在某些 Windows 安装中,我无法在 System32 下注册 OCX。由于这成为我公司的正常问题,我的解决方法是:

  • 在云端硬盘中创建一个名为 OCX 的文件夹(可以随意放置)
  • 将 OCX 放在那里
  • 以管理员身份启动 cmd.exe
  • 在该文件夹中注册 OCX:

    C:\Windows\System32> regsvr32.exe C:\OCX\mscomctl.ocx 
    

这每次都有效。

不要删除 OCX 文件夹。


编辑:

在全新的 Windows 7 / 8 安装中,通过运行具有管理权限的 Office 应用程序(即 Access),我无需注册 OCX 即可运行相同的应用程序。 发现它是因为打印服务器给出了相同的 OCX 问题。 可能这可以通过编辑 OCX 权限而不是以管理员身份运行来解决。

【讨论】:

    猜你喜欢
    • 2019-08-19
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 2014-06-03
    • 2011-07-13
    • 2015-08-23
    • 1970-01-01
    相关资源
    最近更新 更多