使用WIn32OLE

时间:2016-04-20 15:47:17

标签: ruby excel-vba win32ole hyperion essbase

我正在使用ruby通过WIN32OLE驱动Excel。当我尝试通过WIN32OLE打开Excel时,似乎无法使用Oracle Hyperion SmartView加载项。

我主要感兴趣的是通过Hyperion的自定义Excel函数HsGetSheetInfo获取工作表信息,在通过WIN32OLE打开Excel后再次无效。

打开后,Excel中几乎没有可能的加载项匹配活动

  • 用于Office,Fusion Edition的Oracle Hyperion Smart VIew(Excel加载项 - HsTbar.xla)
  • Oracle Hyperion Smart VIew for Office,FUsion Edition(COM加载项 - HsAddin.dll)
  • Hyperion(错误)(Action - mscoree.dll)

任何指针?

# 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
  • Hyperion Smart View版本11.1.2.2.310
  • Ruby 2.2.2
  • Microsoft Office Professional Plus 2010 - Excel版本14.0.7166.5000(32位)

Excel Opened via WIN32OLE without Smart View [Excel Opened normally with Smart View 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

时返回“错误”,则函数本身

0 个答案:

没有答案