常に情報を表示するために、継続的にループする必要がある PowerPoint プレゼンテーションがあります。1 つのスライド内のリンクされた Excel ワークシート オブジェクトが、そのスライドが表示されるたびにデータを更新し、更新されたデータがループ プレゼンテーションに表示されるようにします。
どうすればこれを行うことができますか?
常に情報を表示するために、継続的にループする必要がある PowerPoint プレゼンテーションがあります。1 つのスライド内のリンクされた Excel ワークシート オブジェクトが、そのスライドが表示されるたびにデータを更新し、更新されたデータがループ プレゼンテーションに表示されるようにします。
どうすればこれを行うことができますか?
更新を行うコードはたった 1 行です。
ActivePresentation.Slides(2).Shapes(1).LinkFormat.Update
と の両方Slides
をShapes
インデックス番号または名前で参照できます。上記の例はShape
、2 番目のSlide
オブジェクトの 1 番目のオブジェクトのリンクを更新します。そのコードを適切なタイミングで実行するには、以下の手順に従う必要があります。
Microsoft Office のドキュメントから:
方法: Application オブジェクトでイベントを使用する
Application オブジェクトのイベントのイベント ハンドラーを作成するには、次の 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 オブジェクトを指し、イベントが発生するとクラス モジュールのイベント プロシージャが実行されます。