Выполнение пользовательских команд в Powerpoint через VBA [дубликат]

Если вы не кодируете веб-приложение, убедитесь, что ваш класс, в котором выполняется @Autowiring, является весенним бобом. Как правило, весенний контейнер не будет знать о классе, который мы могли бы назвать весенним бобом. Мы должны рассказать весенний контейнер о наших весенних классах.

Этого можно достичь путем настройки в appln-contxt или лучший способ - аннотировать класс как @Component и, пожалуйста, не создавайте аннотированный класс, используя новый оператор. Убедитесь, что вы получили его из контекста Appln, как показано ниже.

@Component
public class MyDemo {


    @Autowired
    private MyService  myService; 

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
            System.out.println("test");
            ApplicationContext ctx=new ClassPathXmlApplicationContext("spring.xml");
            System.out.println("ctx>>"+ctx);

            Customer c1=null;
            MyDemo myDemo=ctx.getBean(MyDemo.class);
            System.out.println(myDemo);
            myDemo.callService(ctx);


    }

    public void callService(ApplicationContext ctx) {
        // TODO Auto-generated method stub
        System.out.println("---callService---");
        System.out.println(myService);
        myService.callMydao();

    }

}
2
задан ak112358 26 February 2011 в 20:56
поделиться

2 ответа

Вы не можете напрямую редактировать .ppam, поскольку это своего рода «скомпилированный». Способ сделать это - сохранить весь свой код / ​​настройки в .pptm (и убедиться, что вы храните этот .pptm как .pptm), и когда вы хотите протестировать его как надстройку, выполните «Сохранить как ..». "в .ppam, а затем загрузить его. Не доволен этим? Вернитесь к своему .pptm и внесите изменения там.

Кстати, если вы не хотите использовать ленту только для того, чтобы убедиться, что она загружена в качестве надстройки, просто используйте макрос AutoOpen (в любой модуль), например:

Sub Auto_Open()
    MsgBox "My add-in has loaded"
End Sub

Вы можете удалить этот макрос AutoOpen позже, как только вы останетесь довольны своей надстройкой.

4
ответ дан Todd Main 23 August 2018 в 02:30
поделиться
  • 1
    Уф. Поэтому я не сумасшедший. Интересно, почему команда PowerPoint решила сделать .ppam нередактируемой, в то время как Excel позволяет редактировать .xlam. Я слышал, что команды разработчиков не всегда взаимодействуют или стремятся к согласованности (например, посмотрите на Publisher). MS нуждается в статье KB на этом. – ak112358 27 February 2011 в 19:45
  • 2
    Это немного странно, но это всегда было так, поэтому я привык к этому :) Теперь попробуйте Word, где все, что вам нужно сделать, это просто добавить .dotm в папку автозагрузки и voila, теперь у вас есть получил надстройку ... – Todd Main 28 February 2011 в 07:05

Поздно к вечеринке здесь, но ради полноты, есть еще один очень полезный трюк, о котором люди, возможно, захотят знать.

  1. Закройте PPT, если он запущен
  2. В REGEDIT перейдите к HKCU\Software\Microsoft\Office\xx.0\PowerPoint\Options (, где xx.0 - 11.0 для Office 2003, 12.0 для Office 2007, 14.0 для Office 2010 )
  3. Добавить DebugAddins a DWORD=1
  4. Завершить regedit.

Появятся надстройки в IDE; вы можете их модифицировать, запускать, тестировать, в основном делать что-либо, кроме SAVE, поэтому после отладки вашего кода экспортируйте все модули / формы / классы, которые вы изменили, чтобы импортировать их в PPT / PPTM, который содержит ваш код и сохранить в качестве надстройки снова.

Это может сэкономить часы отладки tedium / time.

8
ответ дан SliverNinja - MSFT 23 August 2018 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: