Я застрял в течение нескольких часов по этой проблеме:Вызов VBA AddIn макрос из VSTO PowerPoint ленты
Я разрабатываю PowerPoint AddIn в C#, и я хочу использовать макрос из другой надстройки, который является PPAM файл. Файл PPAM установлен и включен.
В справочнике Application я обнаружил, что мне нужно использовать метод Application.Run
но я не могу заставить его работать (ничего не происходит) ... Вот мой код:
Globals.ThisAddIn.Application.Run("PPspliT.ppam!PPspliT.PPspliT_main", null);
PPspliT.ppam
является установленный AddIn (, который расположен здесь: C:\Users\XXXX\AppData\Roaming\Microsoft\AddIns\PPspliT\
)
модуль, в котором PPspliT_main
макрос называется называется PPspliT
.
Еще одна вещь, которую я нахожу странной, заключается в том, что Run должен принимать два аргумента, даже если макрос не имеет никакого аргумента (, поэтому я поместил null как второй аргумент).
Я также попытался установить AddIn программно с помощью этого:
String addinPath = @"C:\Users\XXXXX\AppData\Roaming\Microsoft\AddIns\PPspliT";
var macroFilePath = Path.Combine(addinPath, "PPspliT.ppam");
var addins = Globals.ThisAddIn.Application.AddIns.Add(macroFilePath);
if (!(addins.Registered == MsoTriState.msoTrue && addins.Loaded == MsoTriState.msoTrue))
{
addins.Registered = MsoTriState.msoTrue;
addins.Loaded = MsoTriState.msoTrue;
}
var app = Globals.ThisAddIn.Application;
string macroToInvoke = string.Format("{0}!{1}", "PPspliT.ppam", "PPspliT.PPspliT_main");
Globals.ThisAddIn.Application.Run(macroToInvoke, null);
Спасибо за вашу помощь! Acacio
«Еще одна вещь, которую я нахожу странной, заключается в том, что Run должен принимать два аргумента, даже если у макроса нет аргументов (поэтому я поместил null в качестве второго аргумента).« Run не требует этого, он может быть особенность пути.NET с COM/VBA, которые необходимы VB.NET для заполнения всех параметров, необязательных или нет. –
Вы видите какую-либо ошибку при применении. Run? –
Нет никакой ошибки, но ничего не происходит. Я попытался напрямую вызвать процедуру: Globals.ThisAddIn.Application.Run («PPspliT_main», null); но все равно ничего. На самом деле, если вы знаете другой способ использовать этот код VBA в моем проекте C#, было бы хорошо, так как у меня есть код надстройки PPspliT и это также pptm-файл. –