2

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

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

VB脚本:

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) 文档以检查它是否完全相同。我试着做

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>'

后一种方法有什么实用的方法吗?

4

2 回答 2

1

怎么样

worksheet.PageSetup.CenterHeader = "&F" + 10.chr + "&A"
于 2011-06-16T03:19:03.683 回答
1

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

你是如何要求的:

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"

编辑:对于不再开箱即用的 64 位窗口,您需要安装一个 64 位 dll,您可以在https://tablacus.github.io/scriptcontrol.html找到它(该网站是日文的,所以在浏览器中翻译页面)

于 2014-07-06T14:39:12.107 回答