1

そのため、PowerPoint2007は実際にアプリケーションレベルでイベントハンドラーをサポートしていることがわかりました。たとえばApplication.NewPresentation、さらにはApplication.AfterNewPresentation

ここで説明されていますhttp://msdn.microsoft.com/en-us/library/ff745073.aspx

しかし、本当の問題は、これらをどのように使用するかということです。どこで使用しますか?私のシナリオを説明するために、私が欲しいのは、動的テキストをいくつかのテキストボックスに挿入することです。私はこれを行うためのマクロコードを持っており、それは私が望むように正確に機能しています。ただし、potmテンプレートから新しいプレゼンテーションが作成されたら、マクロを起動する必要があります。そして、そのイベントでのみ。Word2007と同じように。

どこから始めればいいですか?このようなサブを作成してpotmファイルとして保存し、そのテンプレートに基づいて新しいプレゼンテーションを開くことを試みました。そして何も起こらなかった。

Private Sub App_NewPresentation(ByVal Pres As Presentation)
    MsgBox "Running!"
End Sub

編集:XMLエディターで任意のOffice2007ファイルを開くことができます。私はMicrosoftOffice用のカスタムUIエディターを使用しており、次のガイドに従ってOffice2007カスタムUI.XMLパーツを追加しています。http://www.pptalchemy.co.uk/PowerPoint_Auto_Open_Code.html

しかし、PowerPointがそのテンプレートに基づいて新しいプレゼンテーションを作成するときに問題が発生します。テンプレートを開くこと自体は問題なく機能します。イベントハンドラーがあり、コードは美しく実行されます。しかし、それに基づく新しいプレゼンテーション?まさか、ハンドラーもあります。しかし、それはマクロを見つけることができないと言っています。Visual Basic Editorを開いてマクロを見つけて実行できるため、マクロも新しいプレゼンテーションに含まれています。正常に機能していないように見えるのは、自動車部品だけです。

4

2 に答える 2

2

PowerPoint VBAで自動マクロを作成する唯一の方法は、ファイルをアドイン(.pptx / .pptm / .potm / etcではなく.ppaまたは.ppam)として使用することです。そしてそれを作成する方法は次のとおりです。

  1. クラスモジュールを作成します。上部(いずれかの後Option XXX)に Public WithEvents App As Application、ルーチンをその下に配置してから配置します。
  2. 任意の名前のモジュールを作成し、次のように配置します。

    Dim X As New Class1
    Sub AutoOpen()
        Set X.App = Application
        ''# Code to create new presentation
    End Sub
    

繰り返しますが、これは.potmの要件からは機能しません。考えられるもう1つの方法は減価償却されていますが、それでも機能します。それは、ウィザードファイルを作成することです。

于 2010-09-16T16:46:12.707 に答える
2

auto_openマクロはアドインでのみ機能するため、作成されたプレゼンテーションのマクロを実行する方法はありません。実行方法に基づいて、実行する新しいプレゼンテーションでイベントを開始するには、リボンをリロードする必要があります。

于 2010-09-18T06:56:16.560 に答える