0

私はこれが初めてで、基本的に私がやりたいことは次のとおりです。

-2 つの Excel ファイルと 1 つの Powerpoint プレゼンテーションがあります -すべてのファイルは共有ネットワークにあります -Excel ファイルを PowerPoint にリンクしました -Office 2003 および 2007 バージョンを持っています

問題:

パワーポイントのスライドショーを再生し、それを 1 台のコンピューターでループして職場の大きな LCD に表示するように設定し、別のコンピューターで Excel ファイルにアクセスしてそこから更新します。問題は、再生中のスライドショーです。私の変更を自動的に表示します。ショーを手動で停止し、スライドの (更新リンク) をクリックして、入力したばかりの更新を表示する必要があります。

スライドショーがショー内で更新されたデータを表示し、手動で停止して更新リンクをクリックする必要がないようにする方法はありますか?

ここで似たような質問を見つけましたが、質問を進めるのに役立つほどの回答はありませんでした。

4

2 に答える 2

1

このコードを使用して上記の問題を解決しました

Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)
    If SSW.View.CurrentShowPosition = 2 Then
        ActivePresentation.UpdateLinks
    End If
End Sub

ショーに 2 つのスライドがあると仮定すると、スライド 2 をパスすると更新リンクがトリガーされ、更新された OLE リンクでスライド 1 にループバックします。この部分にたどり着くまでに多くの読書が必要でしたが、ショーを開始すると実行できません。コードがすべてのスライド 2 をループするように、手動で Alt+F8 を押して [実行] をクリックする必要があります。

編集:マクロを一度も実行せずに、最終的に機能するようになりました。パワーポイントを開いてショーを再生するだけです。更新は、ショーがスライド 2 または最初のスライドを通過したときに動的に更新されました。現在、この問題の解決策がまだないものもあります。これがお役に立てば幸いです。

ここhttp://skp.mvps.org/autoevents.htmにある autoevent.zip を利用しました。zip に含まれている AutoEvents.ppa をアドインとしてインストールし、PPT2007 と PPT2003 で有効にしました。次に、このコードで通常のモジュール/マクロを作成しました。

Sub Auto_ShowBegin()
ActivePresentation.UpdateLinks
End Sub
Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)
'
' AUTO UPDATE OF OLE LINKS MACRO
'
    If SSW.View.CurrentShowPosition = 2 Then
        ActivePresentation.UpdateLinks
    End If
End Sub

そして、あなたの完了。2003 と 2007 の両方で、マクロを有効にした形式で PowerPoint を保存してください。これは、私が 2 つのバージョンの ms office を持っているためです。VBAプロジェクトオブジェクトモデルへのアクセスを信頼するというチェックボックスにチェックマークを付けます。また、スライド ショーをループして、スライド 2 またはショーの最初の部分を通過したときに、すべての OLE リンクを更新します。

私が何かを逃した場合はコメントしてください。お役に立てれば。

于 2012-07-27T01:53:53.537 に答える
0

これにはコードが必要だと思います。

プレゼンテーションに新しいクラス モジュールを追加し、「clsEvents」という名前を付けます。次のコードを追加します。

Public WithEvents PPTEvent As Application

Sub PPTEvent_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
   Dim objSld As Slide, shp As Shape

   Set objSld = Wn.Presentation.Slides(Wn.View.CurrentShowPosition)

   For Each shp In objSld.Shapes
      If shp.Type = msoLinkedOLEObject Then
         shp.LinkFormat.Update
      End If
      Next shp

End Sub

通常のモジュールでは、次のように入力します。

Dim app As clsEvents

Sub SetUpEvents()

    Set app = New clsEvents
    Set app.PPTEvent = Application

End Sub

スライドショーを開始する前に setupevents を実行します。

于 2012-07-26T07:02:35.503 に答える