Получить CustomLayoutPtr из CustomLayoutsPtr в PowerPoint API

Я пытаюсь загрузить файл банка и использовать его макеты в зависимости от требований.

В VBA это примерно так:

    Sub setLayout()
Call LoadDesign

ActivePresentation.Slides(1).CustomLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(3)

End Sub

Sub LoadDesign()
ActivePresentation.Designs.Load TemplateName:="C:\myPptTemplate.pot", Index:=1
End Sub

В C ++ я попробовал:

    PowerPoint::DesignPtr my_design= my_active_presentation->Designs->Load(as_bstr(template_filename), 1);
PowerPoint::CustomLayoutsPtr my_layouts = my_design->SlideMaster->CustomLayouts;
PowerPoint::CustomLayoutPtr my_layout = my_layouts->Item(_variant_t(1));

Он отлично работает в VBA, но не в C ++.
Я не могу получить CustomLayoutPtr из my_layouts. Выдает исключение E_INVALIDARG.

Буду благодарен, если вы поделитесь какими-нибудь идеями о том, как я могу решить эту проблему.

Ref:

MSO API 2007

VS2008

1

Решение

Решение заключается в использовании:

    long i=1;
_variant_t index(i, VT_I4);

VT_I4 4-байтовое целое число со знаком.

В 32-разрядной системе VT_INT представляет собой 32-разрядное целое число со знаком.

В 64-разрядной системе VT_INT представляет собой 64-разрядное целое число со знаком.

У меня 64-битная версия, но VT_INT все еще не работает. Может быть, некоторые внутренние проблемы.

Надеюсь, это поможет.

0

Другие решения


По вопросам рекламы [email protected]