Неожиданное поведение при использовании метода run для объекта win32ole excel - PullRequest
2 голосов
/ 17 декабря 2011

У меня есть следующий бит кода 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.)

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

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

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

Тем не менее, наблюдаемое (и воспроизводимое) поведение несколько странно.

0 голосов
/ 17 декабря 2011

Чтобы исключить глупую возможность, у вас не было нового кода как

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

ты? Если бы вы это сделали, это бы объяснило, почему два макроса были запущены!

...