【问题标题】:How to make Win32::OLE work on 64bit MS OFFICE installation如何使 Win32::OLE 在 64 位 MS OFFICE 安装上工作
【发布时间】:2014-10-20 00:33:24
【问题描述】:

我有两台电脑,一台安装了 MS Office 2013 32 位,另一台安装了 MS Office 64 位。 我有使用 Win32::OLE Perl 模块来操作 XLS 电子表格的 Perl 代码。 该代码在 32 位 PC 上运行良好,但在 64 位 PC 上出现问题。

在这里做了一些研究后,我发现了。 问题出在以下代码行:

use Win32::OLE::Const 'Microsoft Excel .* Object Library';

我查看了 Win32::OLE::Const 模块内部,似乎该模块正在注册表中寻找该库。当我从 32 位和 64 位打印出注册表中的所有条目时,我发现这个库在 32 位上可用,而在 64 位上不可用。

有没有办法在 64 位上安装该库?如果没有,是否还有其他模块可以实现 Excel 的 OLE 自动化?

我的 Perl 脚本需要做的就是打开 XLS 文件并将其保存为 CSV。我在所有其他脚本中使用Spreadsheet::ParseExcelSpreadsheet::XLSX 来做这件事。这个特定 XLS 文件的问题在于它受密码保护并使用非标准密码加密。所以Spreadsheet::ParseExcel 无法打开它。 Win32::OLE 在 32 位上打开文件没有问题。

如果需要,可以提供代码。

请指教。

谢谢你, -安德烈

【问题讨论】:

  • 您是在尝试从 32 位还是 64 位 perl 链接到 64 位机器上的库?
  • 我不想链接。我想弄清楚为什么 Microsoft Excel .* 对象库在 32 位上可用而在 64 位上不可用,有没有办法让它可用。
  • 这就是我所说的链接库的意思。你是想在 64 位机器上用 32 位 perl 还是 64 位 perl 来做?
  • 这是为 MSWin32-x64-multi-thread 构建的 perl 5,版本 16,subversion 3 (v5.16.3)
  • 我在使用 Excel 和 Outlook 时遇到了同样的问题。我使用的是 Perl 5.10。我刚刚升级到 Perl 5.18,问题仍然存在。

标签: excel perl win32ole


【解决方案1】:

我使用您的 Win32::OLE::Const 模块在 Perl 中提供 Excel 常量。

最近,我用 Office 2016 安装了一个干净的 Win7 x64 并且脚本不再工作(使用与当前安装的最新版本 Win32::OLE::Const 模块(2016 年 6 月 4 日)ActiverPerl 64 位安装) .

经过一番调查,我发现Win32::OLE::Const 没有看到 Excel 自动化对象,尽管它已经很好地注册并在注册数据库中可用。

在注册数据库中,以下键包含 Excel 可执行文件的路径:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{00020813-0000-0000-C000-000000000046}\1.9\0\Win64

如果我手动添加一个新密钥

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{00020813-0000-0000-C000-000000000046}\1.9\0\Win32 

使用与 Win64 键相同的路径,然后 Perl 脚本找到 Excel 类型库并再次工作。

希望这会有所帮助。

【讨论】:

  • 这对我有帮助。我使用的是 Office 64、Active Perl x64,但它仍然找不到类型库。然后我应用了注册表修复,瞧!成功了!
  • 像魔术一样工作! win10 与 Office 64 位。谢谢!
  • 这对我有用!搜索了很多,这个是完美的!非常感谢您节省了我的一天
【解决方案2】:

注册表项也有助于 Outlook 2013。

/HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{00062FFF-0000-0000-C000-000000000046}\9.5\0\win32

【讨论】:

    猜你喜欢
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 2011-10-30
    • 1970-01-01
    相关资源
    最近更新 更多