使用win32ole从Ruby调用vbscript函数是否实用?

时间:2011-06-16 01:43:27

标签: ruby vbscript win32ole

使用win32ole从Ruby调用VBScript函数(例如VBScript的Chr(charcode))是否切实可行?

背景:在研究如何将一些格式正确的标题添加到Excel工作表时,我遵循了我的标准操作程序:记录一个excel宏并复制并粘贴代码。

的VBScript:

ActiveWindow.View = xlPageLayoutView
With ActiveSheet.PageSetup
    ' Irrelevant options snipped
    .CenterHeader = "&F" & Chr(10) & "&A"
    ' More irrelevant options snipped
End With

以下Ruby代码

# workbook is an existing workbook object
worksheet = workbook.Worksheets.Add
worksheet.PageSetup.CenterHeader = "&F \n &A"

有效,但我必须查找Chr(charcode) documentation来检查它是完全相同的。我试着做了

worksheet.PageSetup.CenterHeader = "&F" + workbook.Chr(10) + "&A"

但得到了

WIN32OLERuntimeError: unknown property or method: `Chr'
    HRESULT error code:0x80020006
      Unknown name.
        from (irb):6:in `method_missing'
        from (irb):6
        from c:/Ruby19/bin/irb:12:in `<main>'

有没有可行的方法来做后一种方法?

2 个答案:

答案 0 :(得分:1)

如何'回合

worksheet.PageSetup.CenterHeader = "&F" + 10.chr + "&A"

答案 1 :(得分:1)

我不会在vbscript脚本中调用更容易在Ruby中完成的东西,但这是可能的。

你是如何要求的:

require 'win32ole'

sc = WIN32OLE.new("ScriptControl")
sc.language="VBScript"
center_header = sc.eval('"&F" & Chr(10) & "&A"') #"&F\n&A"

以及如何在Ruby本身中完成它

"&F" + 10.chr + "&A" #"&F\n&A"

"&F\n&A" #"&F\n&A"