2

パワーポイントのプレゼンテーションが開いたら、OS X アプリケーションを開く必要があります。パワーポイントを開いたときにVBAコールバックがありました(Auto_Open())。しかし、プレゼンテーションを開くたびにコールバックが必要です。

Windows では、各プレゼンテーションを個別の PowerPoint アプリ (差分インスタンス) で開くことができます。Mac では、Powerpoint アプリが 1 回開くと、すべてのプレゼンテーションが同じ PowerPoint アプリケーション (Powerpoint 2016- Mac バージョン) で開きます。

各プレゼンテーション ファイルが開いたときにコールバックが必要で、ココア アプリケーションでコード スニペットを実行する必要があります。

4

1 に答える 1

0

考えられる回避策は、開いているプレゼンテーションをループ チェックし、それを以前に開いたプレゼンテーションと比較することです。

まず、このスクリプトの実行が開始されると、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 まで、「すべてのプレゼンテーションの名前」に変更はないと思います。

于 2016-10-17T19:54:39.557 に答える