使用win32ole excel对象的run方法的意外行为

时间:2011-12-17 01:57:20

标签: ruby excel-vba win32ole vba excel

我有以下一些红宝石代码可以正常工作

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的参数的宏。)

2 个答案:

答案 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)')
你呢?如果你这样做,那就解释了为什么要运行两个宏!