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

标签 ruby vbscript win32ole

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

背景:在研究如何将一些格式良好的标题添加到 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) 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>'

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

最佳答案

我不会为在 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 位 Windows,您需要安装一个 64 位 dll,您可以在 https://tablacus.github.io/scriptcontrol.html 找到它。 (该网站是日文的,因此请在您的浏览器中翻译该页面)

关于ruby - 使用 win32ole 从 Ruby 调用 vbscript 函数是否实用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366261/

相关文章:

ruby - 哪种风格,lambda..should 或 expect..to,更适合在 RSpec 中测试预期?

css - 有没有办法用 Selenium 测试响应式 CSS?

VBScript 选择最后一次出现 "|"后的子字符串

javascript - 如何处理VBS中的JavaScript错误?

带有 win32ole 的 Ruby 程序在 Windows 7 64 位下不再工作

html - 删除前导和尾随的换行符

ruby-on-rails - 模型未保存时在客户端获取错误文本

scripting - 如何停止Windows中运行的VB脚本

ruby - Ruby 如何知道哪个 OLE 对象是可枚举的?

excel - Excel 中的文本框控件 - 如何在 Perl 中引用