class WIN32OLE

WIN32OLE 对象代表 Ruby 中的 OLE 自动化对象。

通过使用 WIN32OLE,您可以访问像 VBScript 这样的 OLE 服务器。

这是示例脚本。

require 'win32ole'

excel = WIN32OLE.new('Excel.Application')
excel.visible = true
workbook = excel.Workbooks.Add();
worksheet = workbook.Worksheets(1);
worksheet.Range("A1:D1").value = ["North","South","East","West"];
worksheet.Range("A2:B2").value = [5.2, 10];
worksheet.Range("C2").value = 8;
worksheet.Range("D2").value = 20;

range = worksheet.Range("A1:D2");
range.select
chart = workbook.Charts.Add;

workbook.saved = true;

excel.ActiveWorkbook.Close(0);
excel.Quit();

遗憾的是,WIN32OLE 不直接支持通过引用传递的参数。相反,WIN32OLE 提供了 WIN32OLE::ARGVWIN32OLE::Variant 对象。如果您想获取通过引用传递的参数的结果值,可以使用 WIN32OLE::ARGVWIN32OLE::Variant

oleobj.method(arg1, arg2, refargv3)
puts WIN32OLE::ARGV[2]   # the value of refargv3 after called oleobj.method

refargv3 = WIN32OLE::Variant.new(XXX,
            WIN32OLE::VARIANT::VT_BYREF|WIN32OLE::VARIANT::VT_XXX)
oleobj.method(arg1, arg2, refargv3)
p refargv3.value # the value of refargv3 after called oleobj.method.