我有以下一些红宝石代码可以正常工作
require 'WIN32OLE'
excel = WIN32OLE.new('Excel.Application')
excel.visible = true
path = Dir.pwd + '\Testargs.xlsm'
excel.workbooks.open(path)
excel.run('IdontTakeargs')
其中IdontTakeargs是Testargs.xlsm工作簿中的一个宏。
如果我尝试调用带参数的宏,即:
excel.run('Itakeargs(1)')
此代码也会运行,但由于某种原因,它会运行宏两次。上面的snytax有点猜测,因为我找不到一个用参数调用宏的例子。
任何有关正确语法的帮助,或者即使我试图完成的任务也是可能的(调用一个接受来自ruby的参数的宏。)
答案 0 :(得分:1)
将参数传递给VBA宏的语法似乎是
excel.run('Itakeargs', '1')
然而,观察到的(并且可重现的)行为有些奇怪。
答案 1 :(得分:0)
为排除愚蠢的可能性,您没有新的代码
require 'WIN32OLE'
excel = WIN32OLE.new('Excel.Application')
excel.visible = true
path = Dir.pwd + '\Testargs.xlsm'
excel.workbooks.open(path)
excel.run('IdontTakeargs')
excel.run('Itakeargs(1)')
你呢?如果你这样做,那就解释了为什么要运行两个宏!