• ベストアンサー

パワーポイントでマクロ(Auto_Close)について

パワポのマクロの件で質問です。 パワポのマクロでAuto_Closeは使えるのでしょうか? 作ってみたのですが、閉じてもマクロが実行されてないようなのです・・・ たとえば Sub Auto_Close() Msgbox "閉じます" End sub としても、何もおきずに閉じてしまいます。 分かる方がおられたら教えてください ※使用環境 WindowsXP パワーポイント2003

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

こんにちは。 >イベントの書き込み方法等を詳しく教わり有難く思っております。 もっと大事なことを書きました。私のデバッグの方法です。今まで、全容は一度も公開したことがありません。今まで、そういう必要がなかったからですが。 デバッグは、Debug.Print やWatch Window を使えばよいとお思いかもしれませんが、意外に、これらは不便です。特に、Debug.Print は、そんなに多くバッファが取れませんので、せいぜい、数行に限られますし、それぐらいなら、ローカルウィンドウを使えば済みます。 「へー、こんなことをしているのだ」っていうだけでよいのです。人は人なのですが、デバッグに、Watch Windowsとか言っている人がいたのですが、本当かなって思いました。 ところで、再びお詫びというか、最初の質問から、その内容を読み違えていたところにあったように思います。一ひねり考えてしまいました。他の人が書いていたら、おそらく、もっと早い段階で解決したものだと思いますが、私は、別の考えたところに、突っ込んでしまった後では、すぐに気が付かなかったのです。 >パワーポイント本体(アプリケーション)を閉じるとエラーがでます。 普通は、ファイルとアプリケーションとは同時に終了するから、エラーは出ないはずですが。 単に「閉じる」という動作そのものに表示を出すということではないかと思いました。そうすれば、ファイル名も関係なくなります。 イベントの部分は、以下のようでよいはずです。Pres.Name は、ファイル名が出ます。ここから、構築して行くべきでした。 これが、本来の基本形です。 '------------------------------------------- Public WithEvents app As Application Private Sub app_PresnetationClose(ByVal Pres as Presentation)    MsgBox Pres.Name & "閉じます" ' End Sub

Jackybrown
質問者

お礼

貴重な情報をご教授していただきありがとうございました。 僕の本来のやりたいことは、ファイル毎に2箇所にファイルを保存しバックアップを自動でしたいと言う事から始まりました。 エクセルでは、いろいろな情報を調べてある程度作れたのですがパワーポイントは全く歯が立ちませんでした。 そこで、基本的に閉じる時にアクションをおこせるマクロの作り方が知りたかったのです。 今後は、この動きを(アドインやマクロなど)参考にして完成させたいと思います。 Wendy02さんのデバック方法などを上手に使えるように頑張ります。 また、ファイル名を確認して実行するif文も上記の動きには必要な部分です。Wendy02さんにご教授いただいて私自身のかなりのスキルアップにつながると思いますので感謝しております。 ありがとうございました。 長い期間、貴重な情報と時間をおさき頂いてありがとうございました。 今後、また躓いた際は、どうぞご教授願います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (7)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

こんにちは。 >何か手順に誤りがありますでしょうか 最初に、まことに大変にすみません。お恥ずかしい話ですが、私のつづりが違っていました。 オブジェクトエラーが出るはずです。なんといっていいやら、穴があったら入りたいぐらいです。言われてすぐに気がつくべきでした。(自分の書き込みを削除したいぐらいです。(^^;←本当に汗が出てきています。) 訂正後(一文字直せばよいけれども……) ------------------------------------------- Public WithEvents app As Application Private Sub app_Presnetation Close(ByVal Press as Presentation)  If UCase(ActivePresentation.Name) Like UCase("Test1.ppt") Then  '実行するファイルをtest1.pptとした場合    MsgBox "閉じます" '  EndIf End Sub '------------------------------------------- 本来は、  If UCase(Press.Name) Like UCase("Test1.ppt") Then と書けばよかったはずですが、少し不安があって書き換えたことが良くありませんでした。

Jackybrown
質問者

補足

こちらこそ、コピペしたばかりに気づきませんでした すみませんでした。 ファイルを閉じる時には閉じますとメッセージがでました。 しかし、パワーポイント本体(アプリケーション)を閉じるとエラーがでます。 できれば、本体を閉じる時も同じようにできたらいいのですが、重ねてご教授願えますでしょうか? もしも、出来ない場合は本体を閉じる時に別なメッセージを出す(ファイルから閉じましょうなど)を出すことはできますでしょうか? わがままばかり言って申し訳ございません 怪我の功名で、イベントの書き込み方法等を詳しく教わり有難く思っております。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

>上記の確認事項では、appがポップアップしました。 それでは、その部分は問題はありません。 もう、デバッグモードで、デバッグを進めていくしかありません。 デバッグ--VBAプロジェクトのコンパイル それで、間違っていれば、どこかでエラーが発生します。 次に、表示--ローカルウィンドウ-->以下にマウスカーソルを置く--->次にF8を押す。 '------------------------------------------- '標準モジュール '------------------------------------------- Public MyClass As Class1 Sub Auto_Open() '←ここ以下にマウスカーソルを置く--->次にF8を押す  Set MyClass = New Class1  Set MyClass.app = Application  End Sub '←*ここまで来たら、止める '------------------------------------------- 数回、F8を押していくと黄色の帯が進んで生きます。 黄色の帯がEnd Subまで来たら、 ローカルウィンドウ側のModule1 をクリック。 その中に、+ MyClass があるはずです。 その+のところをクリック その中に、+app があるはずです。 そうしたら、その中に、Application が確保されているはずです。 右側を見ると、Application と書いてあるはずです。 それで、Application オブジェクトが確保されました。 これで、ひとまず完成です。 本来、仮のチェックプログラムを置きたいところですが、現行のプログラムでは、チェックプログラムと同質の内容ですから、割愛します。 しかし、こちらとしては、アドイン自体が動くかどうかの検討はされていません。 基本的には、アドインはしかるべき場所においてあることが条件です。 通常は、ここです。(XPの場合で、Vistaでも、同様の場所があります) C:\Documents and Settings\[User Name]\Application Data\Microsoft\AddIns\ 次に、メニューから、ツール--アドイン--参照--登録したファイルを選択して登録をしていないとできません。 セキュリティで、信頼できる発行元--組み込み済みのアドインを信頼する  は登録していないといけません。

Jackybrown
質問者

補足

いつも、根気強くご教授いただきありがとうございます。 上記操作を行ないました 1.デバック(コンパイル)→エラーなし 2.ローカルウィンドウチェック→appの表示までOK 3.アドインの位置→通常の位置にあります 4.アドイン登録→新規追加・読み込みで完了 5.セキュリティ登録→登録OK 以上の操作を完了しましたが、同様のエラーが発生します。 ここで、手順のおさらいをお願いできますでしょうか 1.VBEにてclassモジュールの挿入で「Public WithEvents app As Application」を入力してAppを選択後「PresentationClose」を選択して、不要なイベントを削除し、「If ~ End If」までを入力しコンパイルで確認 2.標準モジュールの挿入で「Public MyClass ~ End Sub」までを入力し、コンパイルで確認後、ローカルウィンドウでF8チェック 3.名前をつけて保存で、種類をppaに選択して適当な名前でアドイン格納場所へアドインを保存する。 4.名前をつけて保存で、「test1.ppt」で適当な位置で保存 5.閉じる(この部分でエラー424が発生) 6.再度test1を開いてマクロを有効、アドインの登録確認、セキュリティの確認をする 以上の手順で行なっても、閉じる際にエラー424が発生します 何か手順に誤りがありますでしょうか 何度も申し訳ございません。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 >閉じるとエラー'424' >オブジェクトが必要ですと出ます。 アドイン・ファイルの中の VBEditor のメニュー--挿入--標準モジュールをクリックして、[標準モジュール]を挿入した後に、以下のコードが入れてなくてはなりません。もしかしたら、以下のコードが、同じ場所に入れていませんか?別々の場所です。ややこしいのですが、そういうことになっています。 ------------------------------------------- ' 標準モジュール '------------------------------------------- Public MyClass As Class1 '← 一番上 Sub Auto_Open()  Set MyClass = New Class1 '←ここがオブジェクトが生成される  Set MyClass.app = Application '* End Sub '------------------------------------------- * 確認するときは、クラス設定されていれば、以下の場所で  Set MyClass. ←ピリオドを入れると、app がポップアップします。 アドインを設定したら、一旦、アプリケーションソフトを一旦終了して、再度立ち上げ、ファイルを開くと、マクロが設定されます。 絵付きのサンプルサイトがあると良いのですが、こういう方法は、あまりありませんので、もう少しがんばってみてください。

Jackybrown
質問者

補足

遅くなり申し訳ございません。 何度も綴りなどを確認するのですが、貴殿の言われたとおり入力されているにもかかわらず、同じエラーがでます。 上記の確認事項では、appがポップアップしました。 一生懸命、説明していただいているのに成果が出ておらず申し訳ございません。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 >やはり2003だからでしょうか そういうことはありません。もう一度、手順を確かめてください。 まず、Class1 モジュールは、VBEditor のメニューの挿入--クラスモジュール(c) をクリックして、 Class モジュールを挿入させます。 その時に、ソフトウェアの一番上の部分で、モジュール名が、「Class1」 となっていることを確認してください。 「Micorosot Visual Basic -********--[Class1(コード)] **** はファイル名 そして、イベント名を、エディタ・ペイン(白い画面)の上部に以下のように書き込むと、 Public WithEvents app As Application 画像のように、  (General)  app  Class とありますので、app を選択すると、適当なイベントが出現します。 左側が「app」と出ているところで、今度は、右の窓から、PresnetationClose を選ぶと、正しいイベントが選択されます。 最初にできた不必要なイベントは、削除しておいてください。通常、このようにして、設定されます。

Jackybrown
質問者

補足

無知で申し訳ございませんでした。 設定することができました。 そこで、閉じるとエラー'424' オブジェクトが必要ですと出ます。 次から次へと頼ってばかりで本当に申し訳ございません。 どうぞよろしく御願い致します

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 PowerPoint は、2003も2007も、VBAの仕様としては、ほとんど同じはずですが、コードをチェックしたのは、PowerPoint 2007 だけです。 前回、リストから引用しただけだったので、私の#2のCloseの部分は間違っていました。お手数かけてすみません。回答者として、不勉強な上にうかつでした。 他に書き方もありますが、ここは、こんな風にしてください。 If UCase(ActivePresnetation.Name) Like UCase("Test1.ppt") Then 'Class1側 '------------------------------------------- Public WithEvents app As Application Private Sub app_Presnetation Close(ByVal Press as Presentation)  If UCase(ActivePresnetation.Name) Like UCase("Test1.ppt") Then '実行するファイルをtest1.pptとした場合    MsgBox "閉じます" 'メッセージボックスに「閉じます」と表示してから閉じる  EndIf End Sub '------------------------------------------- アドインは編集できない場合もありますので、その場合は、コードをすべて入れて、同名のファイル名(アドイン)で上書きしてしまってください。 クラス側のイベント名が正しく入っているかのチェックポイントを図にして入れておきます。

Jackybrown
質問者

補足

いつも、アドバイスありがとうございます。 何度もチャレンジしてみるのですが、「WithEvents」が正しくはいりません。 ご指導のクラス側のイベント名チェックポイントの左側にappが入らずに右側にapp_Presnetation Closeと入ってしまいます。 なぜなんでしょうか? はやり2003だからでしょうか 何度もお手数をおかけしてもうしわけございません。 どうぞよろしく御願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 > 試しにアドインで保存して、アドインを導入しても動かないようです。 #1の書き込みは、簡単に書きすぎました。 WordもExcelも今後こうなるのかもしれませんが、サンプル・コードを最初見てください。 アドインで保存するコード 挿入で、標準モジュール と クラスモジュールを設けます。 '------------------------------------------- ' 標準モジュール '------------------------------------------- Public MyClass As Class1 Sub Auto_Open()  Set MyClass = New Class1  Set MyClass.app = Application End Sub '------------------------------------------- 'Class1 '------------------------------------------- Public WithEvents app As Application Private Sub app_AfterPresentationOpen(ByVal Pres As Presentation)  'Test1.p* --- ファイル名  If ActivePresentation.Name Like "Test1.p*" Then 'ファイル名で選別   MsgBox Time '実行する部分  End If End Sub '------------------------------------------- 後は、たぶん分かるとは思いますが、 Office ホームキー(左上の丸いボタン)--アドイン--PowerPoint アドイン--新規追加-- で選択してください。アドインが特別な場所にある場合は、信頼するフォルダを登録しておいてください。 後は、保存してあければよいです。 Auto_Close() はありません。Class 側は、ある意味ではローカルモジュールと同じですから、 app_PresentationBeforeClose を選んでください。 If ActivePresentation.Name Like "Test1.p*" Then を入れて、その後に目的のコードを入れてください。

Jackybrown
質問者

補足

ご教授ありがとうございます。 ご教授頂いた通りにいろいろと試してみたのですが、うまく動きません。 そこで、下記の件についてご教授願います。 >Auto_Close() はありません。 ・・・とありますが、「app_PresentationBeforeClose」を選んだ場合は標準モジュールはどのように設定すればよろしいのでしょうか? Auto_openのままでよろしいのでしょうか? 度々の質問でお手数をおかけします。 現在、アドイン登録したコードを記述します '標準モジュール Public MyClass As Class1 Sub Auto_open() Set MyClass = New Class1 Set MyClass.app = Application End Sub 'クラスモジュール Public WithEvents app As Application Private Sub app_PresentationBeforeClose(ByVal Pres As Presentation) If ActivePresentation.Name Like "Test1.ppt" Then '実行するファイルをtest1.pptとした場合 MsgBox "閉じます" 'メッセージボックスに「閉じます」と表示してから閉じる End If End Sub どこか間違っているのでしょうか? また、小生はパワーポイント2003と使用していますが、2003でも大丈夫でしょうか? どうぞよろしく御願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 PowerPoint で、Auto_Open や Auto_Close は、アドイン型(2003--ppa, 2007-ppam に保存してあげないと、実行されません。

Jackybrown
質問者

補足

試しにアドインで保存して、アドインを導入しても動かないようです。 具体的に、上記内容を起動できるようにご指南いただけませんでしょうか。 どうぞよろしく御願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのマクロでパワーポイントについて

    エクセルでマクロを使用してパワーポイントを開くマクロについて質問です。 下記ののようなマクロを実行すると、目的のファイルは開くのですが 最小化で開かれてしまいアクティブになりません。(タスクバーのところで光っているだけ) このマクロ組んだPCで実行するとスライドショーが開かれるのですが 他のPCからこのマクロが組んであるエクセルを開いて実行すると上記のような 状態になってしまいます。 どのようにすれば、どのPCでもスライドショーから始まるのか教えて下さい。 Sub コール() Set objPpt = GetObject("V:\テスト\コール_20170711.pptx") '' スライドショー実行 objPpt.SlideShowSettings.Run End Sub

  • [Excel2000]auto_closeを止めさせるには

    Excel2000で、 特定のボタンを押した場合以外の閉じる処理を キャンセルさせたいのですがうまくいきません sub ボタン押() flg = true end sub sub auto_close() if flg <> true then msgbox "AAA" exit sub end if end sub これでは、どーやってもそのまま終了してしまいます。 なにか良い方法はないでしょうか・・・ よろしくおねがいします。

  • エクセル2007 Sub Auto_Close()について教えて下さい

    ドラッグとドロップを禁止するために以下のマクロを入れています。 Sub Auto_Open() '無効 Application.CellDragAndDrop = False End Sub Sub Auto_Close() '有効 Application.CellDragAndDrop = True End Sub 上記のマクロだと、ファイルを開いた時は CellDragAndDrop は無効なのですが 終了するときに、[終了]-[キャンセル]して再度作業を進めようとすると CellDragAndDrop が有効になってしまいます。 Sub Auto_Close() で、[終了]-[キャンセル]の場合のみ、  Application.CellDragAndDrop = False とするには、どのうように記述すれば良いのでしょうか? よろしくお願いします。

  • パワーポイントのマクロについて

    パワーポイントで簡単なマクロ(アニメーションを動かさないで、スライドショーを実行する)を作りました。そしてユーザー設定からツールバーにボタンとして配置しました。 ところが、一度そのパワーポイントを閉じてしまい同じファイルや違うファイルを開くと、そのマクロが無効になってしまいます。 私がお聞きしたいのは、 「一度作ったマクロを次回から開くすべてのパワーポイントファイルで使えるようにすることはできるのか?」 です。 どうかご存じの方いらっしゃいましたら、よろしくお願い申し上げます。

  • パワーポイント2010で画像のマクロ

    はじめまして  マクロ初心者なので、教えていただけたら幸いです。 パワーポイント(以後パワポ)上で、多量の画像をしなければならず、 処理としましては、 自分でやる作業は、パワホ上で、挿入 画像選択 パワホのスライドの上に表示される。 ここからマクロをくみたいのです。 マクロ内容 画像を選択、画像サイズを高さ15.24→5.3cm 幅20.32→7.07cmに変更したい。 マクロの実行をする。→ 画像サイズが変わっている。 すいません。初心者なので、わかりやすくおしえてくれませんか?

  • パワーポイントで教えていただいたマクロが2010ではできたのに、200

    パワーポイントで教えていただいたマクロが2010ではできたのに、2007でできなくて困っています。 先日こちらで以下の質問をしました。 ----------------------------- スライドごとに1枚の図が入ったスライドが100くらいあります。 図の大きさを同じに揃えたいのですが、オブジェクトの書式設定で一枚ずつサイズを指定して配置も指定していますが、いつになっても終わりません。 ワードのキーマクロのように同じ繰り返しを簡単にできる技はないのでしょうか。 教えてください。 パワーポイントのバージョンは、2003と2010(試用版)でやっています。 ---------------------------------- http://okwave.jp/qa/q5885234.html そして絵の大きさを揃えるマクロを教えていただきました。 とても良かったのですが、2010試用版が使えなくなるので、発売まで待てず2007を買いました。 そしたら2007では、実行しても何も起きなくて困っています。 エラーが起きるわけでもないのに、絵の大きさが変わりません。 2007でも使えるマクロを教えてください。 よろしくお願いいたします。

  • エクセルからマクロでパワーポイントを開きたい。

    エクセルでUserFormに配置したボタンをクリックすると"AAA.pps"という名のパワーポイントスライドショーが始まる、としたい。 次の形でパワーポイントを開くところまでは参考書で見つけたが その先の名前の指定方法がわかりません。ご教示乞う。 エクセル、パワーポイントともに2003。 Private Sub CommandButton1_Click() Application.ActivateMicrosoftApp xlMicrosoftPowerPoint End Sub 試行錯誤でマクロの記録で取得した次のコードでは頭の「Presentations」で「変数が定義されていません」と断られました。 sub aaaaa() Presentations.Open FileName:="C:\Documents and Settings\user\My Documents\AAA.pps", ReadOnly:=msoFalse With ActivePresentation.SlideShowSettings .ShowType = ppShowTypeKiosk .LoopUntilStopped = msoTrue .ShowWithNarration = msoTrue .ShowWithAnimation = msoTrue .RangeType = ppShowAll .AdvanceMode = ppSlideShowUseSlideTimings .PointerColor.SchemeColor = ppForeground .Run End With End Sub

  • パワーポイントのマクロの実行

    パワーポイント2003で簡単なコピーのマクロを作成しましたが、実行させようとすると「実行」がグレーになっていて出来ません。「編集」や「削除」は出来ます。どうしてでしょうか?

  • Excel 終了マクロ

    Excel で終了マクロを作ってみましたが、途中で次のメッセージが出てしまいます。 「実行時エラー'424' オブジェクトが必要です」 どう直したらよいか、教えて下さい。よろしくお願いします。 Sub Macro1() With ActiveWorkbook If MsgBox("終了します") = vbOK Then Set dbsTemp = Nothing ActiveWorkbooks.Close End If End With End Sub

  • パワーポイントが開けない

    パワーポイント2003を使用してます。OSはXPです。アプリとしてはちゃんとインストールしてあり、パワポを起動してからファイルを開くとパワポのファイルは見れるし、編集も出来ますが、保存したパワポのアイコンをダブルクリックしても開けないし、アプリケーションで開くからは、パワポが選択できません。どうしたらいいでしょうか?

このQ&Aのポイント
  • 人生で初めて好きな人ができましたが、先輩との関係について悩んでいます。
  • 仕事でお世話になった先輩との関係が進展してきて、自分の気持ちに気づきましたが、どうすればいいのかわかりません。
  • 友人からは好意はあるけど、積極的にアプローチするしかないとアドバイスされていますが、勇気が出ません。先輩の言動が友情の範囲内なのか恋愛のサインなのか分からず、迷っています。
回答を見る

専門家に質問してみよう