Можно ли как-нибудь перезвонить из powerpoint, когда открывается какая-либо презентация? (Powerpoint 2016- версия для Mac)

Мне нужно открыть приложение OS X при открытии презентации PowerPoint. Я получил обратный вызов VBA при открытии powerpoint (Auto_Open()). Но мне нужно перезвонить для каждой открытой презентации.

В окнах мы можем открыть каждую презентацию в отдельном приложении PowerPoint (экземпляр разницы). В Mac приложение Powerpoint откроется один раз, и все презентации откроются в одном приложении Powerpoint (Powerpoint 2016- версия Mac).

Мне нужно перезвонить, когда каждый файл презентации открыт, и мне нужно выполнить фрагменты кода в моем приложении какао.

1 ответ

Идея возможного обходного пути заключается в циклической проверке открытых презентаций и сравнении их с уже открытыми ранее презентациями.

Во-первых, когда этот скрипт запускается, он проверяет, работает ли PowerPoint (->, если нет, то завершается). Если PP запускается, то скрипт записывает количество открытых презентаций.

Затем скрипт проходит цикл: в этом примере он повторяется 100 раз (только для моего теста, но он должен повторяться вечно!). Для каждой итерации он ищет список презентаций PP и сравнивает их со списком ранее: если презентация отсутствует в предыдущем списке, то она новая, просто открытая!

Сценарий также останавливается при выходе из PowerPoint с предупреждением (попытка блока).

tell application "System Events" to set PP_Running to exists (processes where name is "Microsoft PowerPoint")
if not PP_Running then return -- Power point is not launched !
tell application "Microsoft PowerPoint" to set Old_list to name of every presentation -- get initial list of open presentations

repeat with I from 1 to 100 -- for test, but it should be repeat with no limit

try
    tell application "Microsoft PowerPoint" to set New_list to name of every presentation
on error
    display alert "PowerPoint no longer launched"
    return -- quit the loop
end try
repeat with aDoc in New_list
    if not (Old_list contains aDoc) then -- new document has been opened !!
        set Old_list to New_list
        log "Open new document = " & aDoc -- do what ever you need to do !!
    end if
end repeat
delay 0.5
set I to I + 1
end repeat

Протестировано на El Capitain / PP 2011: но я думаю, что ничего не изменилось с PP 2011 до PP 2016 в "названии каждой презентации".

Другие вопросы по тегам