2010-09-22 4 views
4

Мне нужен способ программно запустить макрорекордер в Excel и указать имя нового макроса, который будет создан.Вызов макрокоманда Excel из кода

Это может быть VSTO или VBA, или с помощью сборщиков Interop Office.

Любые идеи, как это можно сделать?

+0

Ну, у меня есть чертовски время, чтобы получить мой ответ на самом деле, что я пытался сделать, когда я понял часть имени. Возможно, они не позволяют запускать макрорекордер, как и другие пункты меню. Я буду продолжать рыть. –

+0

Сегодня у меня не хватило времени, я могу получить доступ к объекту, но команда Execute завершается с ошибкой. Я буду работать над этим на следующей неделе. –

+0

ОК, сделано, что я мог бы сделать. –

ответ

2

В VBA:

Dim ctrlStart As CommandBarControl, ctrlStop As CommandBarControl 
Set ctrlStart = Application.CommandBars.FindControl(ID:=184) 
Set ctrlStop = Application.CommandBars.FindControl(ID:=2186) 

ctrlStart.Execute 

'name part would go here, but first you have to deal with a modal dialog 

ctrlStop.Execute 

Он выглядит как метод Execute по контролю RecordMacro открывает модальное диалоговое окно. Невозможно передать этот параметр или сделать что-то вроде SendKeys. Единственный способ, которым я это вижу, - написать подраздел, который переименует макрос после факта. Будет немного сложно определить, что такое имя нового макроса, и у вас все еще будет диалоговое окно для рассмотрения.

Смежные вопросы