如何使Win32 :: OLE在64位MS OFFICE上安装

我有两台电脑,一台安装了MS Office 2013 32位,另一台安装了MS Office 64位。 我有Perl代码使用Win32::OLE Perl模块来操作XLS电子表格。 代码在32位个人电脑上工作得很好,但在64位上有问题。

在做了一些研究之后,我发现了。 问题是下面这行代码:

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

我查看了Win32::OLE::Const模块,看起来模块正在registry中查找该库。 当我从32位和64位打印出registry中的所有条目时,我发现这个库在32位上可用,在64位上不可用。

有没有办法在64位上安装该库? 如果没有,是否有任何其他模块,将允许Excel的OLE自动化?

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

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

请指教。

谢谢,安德烈

我使用您的Win32::OLE::Const模块来使用Perl中的常量。

最近,我有一个干净的Win7的X64安装与Office 2016和脚本不能工作了(使用最新版本的Win32::OLE::Const模块与当前安装(在2016年6月6日)ActiverPerl 64位安装)。

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

在注册数据库中,以下registry项包含Excel可执行文件的path:

 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键的path相同,然后Perl脚本find了Excel的typelib并重新工作。

希望这可以帮助。

还不能评论。 所以,张贴为答案! :

  1. 您可以使用活动状态的64位版本的Perl。 参考链接1

  2. 参考链接2也可以帮助你,虽然它的ruby。

我不知道这个Perl模块是否支持Jet Oledb驱动程序,如果是的话,那么下载可能会有所帮助:

http://www.microsoft.com/en-us/download/details.aspx?id=13255

registry项也有助于Outlook 2013。

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