
[英]Ruby program with win32ole does not work any more under Windows7 64bit
[英]How to make Win32::OLE work on 64bit MS OFFICE installation
我有两台 PC,一台安装了 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::ParseExcel
和Spreadsheet::XLSX
。 此特定 XLS 文件的问题在于它受密码保护并使用非标准密码加密。 所以Spreadsheet::ParseExcel
无法打开它。 Win32::OLE
在 32 位上打开文件没有问题。
如果需要,可以提供代码。
请指教。
谢谢你 - 安德烈
我使用您的Win32::OLE::Const
模块在Perl中提供Excel常量。
最近,我使用Office 2016进行了干净的Win7 x64安装,并且该脚本不再工作(使用最新版本的Win32::OLE::Const
模块,该模块随当前安装(2016年6月6日)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类型库并再次工作。
希望这可以帮助。
注册表项也有助于Outlook 2013。
/HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{00062FFF-0000-0000-C000-000000000046}\9.5\0\win32
如果我没有编辑注册表的权限,如何解决问题?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.