/ / Несподівана поведінка за допомогою методу run для об'єкта win32ole excel - ruby, excel-vba, win32ole, vba, excel

Неочікувана поведінка за допомогою методу запуску для об'єкта win32ole excel - ruby, excel-vba, win32ole, vba, excel

У мене є наступний біт ruby ​​код, який працює відмінно

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

Відповіді:

1 для відповіді № 1

Синтаксис передавати аргумент макросу VBA

excel.run("Itakeargs", "1")

Проте спостережувана (і репродуцируемая) поведінка є дещо дивною.


0 для відповіді № 2

Щоб виключити дурну можливість, ви не мали свого нового коду

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

ти? Якщо ви зробили це, поясніть, чому було запущено два макроси!