如何使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::ParseExcel
和Spreadsheet::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并重新工作。
希望这可以帮助。
还不能评论。 所以,张贴为答案! :
-
您可以使用活动状态的64位版本的Perl。 参考链接1
-
参考链接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