如何从Ruby运行Excel宏?
问题 我有一个十多年的Excel工作簿,里面有无数行VBA代码,其中一些我必须更新。所以我有了用Ruby编写单元测试的疯狂想法 问题 如何从Ruby调用Excel宏 到目前为止我拥有的 我有如何从Ruby运行Excel宏?,ruby,unit-testing,excel,vba,Ruby,Unit Testing,Excel,Vba,问题 我有一个十多年的Excel工作簿,里面有无数行VBA代码,其中一些我必须更新。所以我有了用Ruby编写单元测试的疯狂想法 问题 如何从Ruby调用Excel宏 到目前为止我拥有的 我有 名为“C:\temp\Test.xlsm”的Excel工作簿 用一张名为“Sheet1”的纸和 单元格“A1” 此外,此Excel工作簿 包含一个名为“Module1”的模块 使用名为WriteToA1()的宏 另一个宏名为ClearA1() 另外,我还有一个Ruby脚本,如下所示: require
- 名为“C:\temp\Test.xlsm”的Excel工作簿
- 用一张名为“Sheet1”的纸和
- 单元格“A1”
- 包含一个名为“Module1”的模块
- 使用名为
WriteToA1()的宏
- 另一个宏名为
ClearA1()
require 'test/unit'
require 'win32ole'
class TestDemo < Test::Unit::TestCase
def testExcelMacro
# Arrange
excel = WIN32OLE.new("Excel.Application")
excel.Visible = true
excel.Workbooks.Open('C:\temp\Test.xlsm')
# Act
excel.run "Sheet1!WriteToA1"
# Assert
worksheet = excel.Workbooks.ActiveWorkbook
assert_equal("blah", worksheet.Range("A1").Value)
excel.Quit
end
end
如前所述,我已启用Excel中的所有宏
Excel正在启动,“Test.xlsm”已打开。线路一定有问题:
excel.run "Sheet1!WriteToA1"
我也试过:
excel.run "Sheet1!Module1.WriteToA1"
只需提供OLE模块的宏名称
excel.run('WriteToA1')
另外请注意,如果要运行带有参数的宏,请使用:
excel.run('MarcoWithArgs', "Arg")
试试这个
excel.run“Test!WriteToA1”
我们有没有可能用win32ole?编写/修改一个marco,或者直接用ruby处理?需要一些库,我只能在“VBA Studio->Reference”中找到,我更喜欢动态生成marco,任何线索都可以显示:),@Lernkurve
excel.run('MarcoWithArgs', "Arg")