Можно ли как-нибудь перезвонить из 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 в "названии каждой презентации".