使用 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/