我正在使用ruby通过WIN32OLE驱动Excel。当我尝试通过WIN32OLE打开Excel时,似乎无法使用Oracle Hyperion SmartView加载项。
我主要感兴趣的是通过Hyperion的自定义Excel函数HsGetSheetInfo
获取工作表信息,在通过WIN32OLE打开Excel后再次无效。
打开后,Excel中几乎没有可能的加载项匹配活动:
任何指针?
# ruby on windows
require 'win32ole'
excel = WIN32OLE.new('Excel.Application')
excel.Visible = true
book = excel.Workbooks.Add
book.Worksheets(1).Cells(1,2).Value = 'Provider' #Other values are tried
book.Worksheets(1).Cells(1,1).Formula = "=HsGetSheetInfo(B1)" #this results in a #NAME? Excel Error
[ 1
更新 - 1: 根据@Rory评论,我尝试禁用/启用所有AddIns(COM和Excel),如下所示:
require 'win32ole'
excel = WIN32OLE.new('Excel.Application')
excel.Visible = true
excel.COMAddIns.each do |ai|
begin
puts ai.Description
ai.Connect = false
ai.Connect = true
rescue Exception => e
puts e.message
end
end
excel.AddIns.each do |ai|
begin
puts ai.Name
ai.Installed = false
ai.Installed = true
rescue Exception => e
puts e.message
end
end
尝试断开/重新连接时出现COMAddIn错误。它表示特权问题:
This add-in is installed for all users on this computer and can only be connected or disconnected by an administrator
更新2
上面重新安装Excel AddIns(并且无法重新连接COM AddIn) - 我看到了改进。功能“HsGetSheetInfo”现在可通过Excel功能自动完成。这意味着它以某种方式注册了Excel。但是,如果在HsGetSheetInfo("Connected") # Returns an 'Error' value