0

常に情報を表示するために、継続的にループする必要がある PowerPoint プレゼンテーションがあります。1 つのスライド内のリンクされた Excel ワークシート オブジェクトが、そのスライドが表示されるたびにデータを更新し、更新されたデータがループ プレゼンテーションに表示されるようにします。

どうすればこれを行うことができますか?

4

1 に答える 1

2

更新を行うコードはたった 1 行です。

ActivePresentation.Slides(2).Shapes(1).LinkFormat.Update

と の両方SlidesShapesインデックス番号または名前で参照できます。上記の例はShape、2 番目のSlideオブジェクトの 1 番目のオブジェクトのリンクを更新します。そのコードを適切なタイミングで実行するには、以下の手順に従う必要があります。

Microsoft Office のドキュメントから:

方法: Application オブジェクトでイベントを使用する

Application オブジェクトのイベントのイベント ハンドラーを作成するには、次の 3 つの手順を完了する必要があります。

  1. クラス モジュールでオブジェクト変数を宣言して、イベントに応答します。
  2. 特定のイベント プロシージャを記述します。
  3. 別のモジュールから宣言されたオブジェクトを初期化します。

オブジェクト変数を宣言する

Application オブジェクトのイベントのプロシージャを記述する前に、新しいクラス モジュールを作成し、イベントを持つ Application 型のオブジェクトを宣言する必要があります。たとえば、新しいクラス モジュールが作成され、EventClassModule と呼ばれるとします。新しいクラス モジュールには、次のコードが含まれています。

VBA

 Public WithEvents App As Application 

イベント プロシージャを記述します。

新しいオブジェクトがイベントで宣言されると、クラス モジュールの [オブジェクト] リストに表示され、新しいオブジェクトのイベント プロシージャを記述できるようになります。(オブジェクト リストで新しいオブジェクトを選択すると、そのオブジェクトの有効なイベントがプロシージャ リストに表示されます。) プロシージャ リストからイベントを選択します。空のプロシージャがクラス モジュールに追加されます。

VBA

Private Sub App_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
    ActivePresentation.Slides(2).Shapes(1).LinkFormat.Update
End Sub

宣言されたオブジェクトの初期化

プロシージャを実行する前に、クラス モジュールで宣言されたオブジェクト (この例では App) を Application オブジェクトに接続する必要があります。これは、任意のモジュールから次のコードを使用して実行できます。

VBA

Dim X As New EventClassModule 
Sub InitializeApp()
   Set X.App = Application 
End Sub  

InitializeApp プロシージャを実行します。プロシージャの実行後、クラス モジュールの App オブジェクトは Microsoft Office PowerPoint Application オブジェクトを指し、イベントが発生するとクラス モジュールのイベント プロシージャが実行されます。

于 2013-08-07T20:08:00.610 に答える