如何从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

问题

我有一个十多年的Excel工作簿,里面有无数行VBA代码,其中一些我必须更新。所以我有了用Ruby编写单元测试的疯狂想法

问题

如何从Ruby调用Excel宏

到目前为止我拥有的

我有

  • 名为“C:\temp\Test.xlsm”的Excel工作簿
  • 用一张名为“Sheet1”的纸和
  • 单元格“A1”
此外,此Excel工作簿

  • 包含一个名为“Module1”的模块
  • 使用名为
    WriteToA1()的宏
  • 另一个宏名为
    ClearA1()
另外,我还有一个Ruby脚本,如下所示:

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")