/ / Nieoczekiwane zachowanie przy użyciu metody run dla obiektu win32ole excel - ruby, excel-vba, win32ole, vba, excel

Nieoczekiwane zachowanie przy użyciu metody run dla obiektu win32ole excel - ruby, excel-vba, win32ole, vba, excel

Mam następujący fragment kodu ruby, który działa dobrze

require "WIN32OLE"
excel = WIN32OLE.new("Excel.Application")
excel.visible = true
path =  Dir.pwd + "Testargs.xlsm"
excel.workbooks.open(path)
excel.run("IdontTakeargs")

Gdzie IdontTakeargs jest makrem ze skoroszytu Testargs.xlsm.

Jeśli spróbuję wywołać makro, które pobiera argumenty, tj .:

excel.run("Itakeargs(1)")

Ten kod również działa, ale z jakiegoś powodu uruchamia makro dwukrotnie. Powyższy snytax jest raczej zgadywaniem, ponieważ nie mogę znaleźć przykładu wywołania makra z argumentami.

Każda pomoc w poprawnej składni lub nawet to, co próbuję osiągnąć, jest nawet możliwe (wywołaj makro, które akceptuje argumenty z ruby).

Odpowiedzi:

1 dla odpowiedzi № 1

Wydaje się, że jest składnia do przekazania argumentu do makra VBA

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

Jednak obserwowane (i odtwarzalne) zachowanie jest nieco dziwne.


0 dla odpowiedzi nr 2

Aby wykluczyć głupią możliwość, nie masz nowego kodu jako

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

czy ty? Jeśli tak, to wyjaśnij, dlaczego uruchomiono dwa makra!