[[20150615122742]] 『パワーポイントのアプリケーションを閉じたい』(KUKI) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『パワーポイントのアプリケーションを閉じたい』(KUKI)

 こんにちは。
 今エクセルからパワーポイントを操作するコードを作っているのですが、
 処理が終わった後のアプリケーションの閉じ方がよくわかりません。
 ご存知の方がいらっしゃいましたら教えて下さい。
 よろしくお願い致します。

 Set pp = CreateObject("PowerPoint.Application")
 pp.visible = true

 〜処理内容は省略〜

 with pp
  Fname = ファイルパス & ファイル名
    .ActivePresentation.SaveAs Fname
    .Presentations(Fname).Close
    .Quit
 End With

 Set pp = Nothing

 このコードだと、処理をして名前を付けて保存したパワーポイントファイルは閉じる
 のですが、パワーポイントのアプリケーション(でいいのかな?)は表示された
 まま閉じません。pp.Quitで閉じると思っていたのですが、どうも違うようです。
 アプリケーションを完全に閉じる方法ってありますでしょうか?

< 使用 Excel:Excel2010、使用 OS:Windows7 >


初めてPowerPoint.Application使ってみたのですが
テスト用として以下
Option Explicit
Sub Macro1()

Dim pp As Variant
Dim Fname As Variant
Set pp = CreateObject("PowerPoint.Application")

 pp.Visible = True
 pp.Presentations.Add
 With pp
  Fname = "C:\test.ppt"
    .ActivePresentation.SaveAs Fname
    .Presentations(Fname).Close
    .Quit
 End With
End Sub
上記ので保存とパワーポイントが閉じました。
パワーポイント excelともに2010です。

アプリケーションを閉じるのはQuitであっています。

ですので原因は処理内容の何かだと思います。

(デイト) 2015/06/15(月) 13:32


 被ったが。

 こちらではWindows7+Excel2010(どちらも32ビット)で処理内容を
 pp.Presentations.Add
 だけにして実行したが終了している。
 (タスクマネージャでもプロセスが残っていないのを確認)
 そちらでも処理をAddだけにして終了するか確認してみてくれ。
 もし、終了するのであれば省略した部分に原因がある可能性が高い。

 そうであれば、面倒かもしれないが省略された処理部分で処理をコメント化して(影響も考慮)
 どこの部分が終了しないことに影響しているか確認してはどうだろうか?

 あるいは省略した部分を掲示板で提示して詳しい人の回答を待つか。

(ねむねむ) 2015/06/15(月) 13:34


Closesした後、Application.Presentations.Countが幾つになっているか確認してみてください。
複数のファイルを開いていた場合、全部閉じないとQuitしないようです。
(???) 2015/06/15(月) 13:43

 パワーポイントのバージョンはなんなんだろうか?
 当方はパワーポイントも2010だが、処理を
 pp.Presentations.Add
 pp.Presentations.Add
 としてプレゼンテーションを二つ開き、

 >.ActivePresentation.SaveAs Fname
 >.Presentations(Fname).Close
 後、「Application.Presentations.Count」が「1」の状態で「Quit」で終了しているが。
(ねむねむ) 2015/06/15(月) 13:53

 追記で。
 単にプレゼンテーションを追加するだけでは閉じられる可能性も考えてアクティブプレゼンテーションを保存してクローズする前に
 ブレークポイントを設け、二つのプレゼンテーションを編集、その後マクロを再開させたが一方を保存後にパワーポイントを終了している。

(ねむねむ) 2015/06/15(月) 14:01


 みなさん、コメントありがとうございます。

 デイトさんの示してくれたコードを自分でも試してみたのですが、普通に消えました。
 デイトさんのコードと違う箇所を探したのですが、

 pp.Presentations.Addの箇所がSet Newpp = pp.Presentations.Addになっていました。
 Newppの変数の指定はDim Newpp as Objectになっています。

 これだとまた閉じ方が変わってくるんでしょうか?

 あとCloseした後にApplication.Presentations.Countを確認したのですが、0になっていました。
 ちなみにバージョンは2010です。
(KUKI) 2015/06/15(月) 14:29

 >With pp
 >Fname = "C:\test.ppt"
 >   .ActivePresentation.SaveAs Fname
 >   .Presentations(Fname).Close
 >   .Quit
 >End With
 を

 >With Newpp
 >   Fname = "C:\test.ppt"
 >   .SaveAs Fname
 >   .Close
 >End With
 >Set Newpp = Nothing
 >pp.Quit
 とするとどうなるだろうか?
 (Newppが解放されていないためではないかと推測。あと追加したプレゼンテーションをNewppに入れているのだから
 それを使えばいいのではないか)

(ねむねむ) 2015/06/15(月) 14:42


 ねむねむさん

 ありがとうございます。
 処理コードでSetなんちゃらになっていて開放されていないのが
 ひとつあったのでそれを開放したら閉じるようになりました。
 みなさんの言うとおり処理コードに問題があったみたいです。

 みなさんアドバイスして下さって、どうもありがとうございましたm(__)m

(KUKI) 2015/06/15(月) 16:04


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.