次の方法で共有

Microsoft 365 PowerPointでApplication.quitを実行するとクラッシュする

Anonymous
2023-09-13T01:39:50+00:00

スライド再生が最後のスライドに到達したらパワポアプリを終了するマクロをVBAで組みましたが、終了時にクラッシュしてしまいます。

Windowsのイベントビューアーには以下のログが出ております。

障害が発生しているアプリケーション名: POWERPNT.EXE、バージョン: 16.0.16731.20234、タイム スタンプ: 0x64fa4764

障害が発生しているモジュール名: ppcore.dll、バージョン: 16.0.16731.20234、タイム スタンプ: 0x64fa7976

例外コード: 0xc0000005

障害オフセット: 0x00000000002d1f90

障害が発生しているプロセス ID: 0x0x80DC

障害が発生しているアプリケーションの開始時刻: 0x0x1D9E5DB952BE7E1

障害が発生しているアプリケーション パス: C:\Program Files\Microsoft Office\Root\Office16\POWERPNT.EXE

障害が発生しているモジュール パス: C:\Program Files\Microsoft Office\Root\Office16\ppcore.dll

レポート ID: 0c195808-deb3-4201-9d46-abe305c4a7d3

障害が発生しているパッケージの完全な名前: 

障害が発生しているパッケージに関連するアプリケーション ID: 

スライド内容

1枚目のスタートボタンを配置(このボタンにマクロを実行でStartButtonを指定)

2枚目~4枚目は画面切り替えで自動で次のスライドに遷移

5枚目は何もしない

VBAコード

Option Explicit

Dim SlideCount As Integer

Private CurrentSlide As Integer

Sub StartButton()

SlideCount = ActivePresentation.Slides.Count 

ActivePresentation.SlideShowWindow.View.Next 
```End Sub 

Sub OnSlideShowPageChange(ByVal ss As SlideShowWindow) 

CurrentSlide = ss.View.CurrentShowPosition

If CurrentSlide = SlideCount Then

ActivePresentation.Close 

Application.Quit 

End If


**システム情報**

Windows 11 Pro 64bit バージョン22H2 OSビルド22621.2134

PowerPoint バージョン2308 ビルド16731.20234

他のPCでも試してみましたが、同様の症状が出ます。

何かコードに問題があるのでしょうか。  
ご教授頂ければ幸いです。
開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

2 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2023-10-01T12:32:01+00:00

    シャロームさん

    回答ありがとうございます。

    1秒待つというヒントを得て、次の様にしたらエラーが出なくなりました。
    CloseとQuitが発生してしまうとエラーが出てしまいますが、終了してくれれば要件は満たしているので問題解決です。

    ほんとうにありがとうございました。

    #If VBA7 Then

    Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 
    

    #Else

    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 
    

    #End If

    Option Explicit

    Dim SlideCount As Integer

    Dim CurrentSlide As Integer

    Sub StartButton()

    SlideCount = ActivePresentation.Slides.Count 
    
    ActivePresentation.SlideShowWindow.View.Next 
    

    End Sub

    Sub OnSlideShowPageChange(ByVal ss As SlideShowWindow)

    CurrentSlide = ss.View.CurrentShowPosition 
    
    If CurrentSlide = SlideCount Then 
    
        Sleep 1000 
    
        'ActivePresentation.Close 'coment out
    
        Application.Quit 
    
    End If 
    

    End Sub

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2023-09-13T02:51:26+00:00

    こんにちは角次郎、

    私はシャロームです、そして私はあなたの質問を喜んで手伝います。このフォーラムでは、私たちはあなたと同じようにマイクロソフトの消費者です。

    VBAを使用してPowerPointを閉じようとするとクラッシュが発生しているようです。これにはいくつかの理由が考えられますが、役立つ可能性のあるいくつかの提案を次に示します。

    遅延を追加する: 場合によっては、PowerPoint が適切に閉じる前に、すべてのタスクを完了するのに少し時間がかかることがあります。アプリケーションを閉じる前に、わずかな遅延を追加できます。 現在のスライド = スライドカウントの場合、
    Application.Wait (Now + TimeValue("0:00:01")) アクティブ プレゼンテーション。閉じる アプリケーション.終了 終了する場合

    DoEvents を使用する: DoEvents 関数は、システムが他のイベントを処理できるように実行を譲ります。これは、PowerPoint他のタスクで忙しい場合に役立つ場合があります。 現在のスライド = スライドカウントの場合、
    DoEvents アクティブ プレゼンテーション。閉じる アプリケーション.終了 終了する場合

    コードを確認する: アプリケーションの終了を妨げる可能性のある他のコードが実行されていないことを確認します。

    オフィスの修復: 上記のいずれも機能しない場合は、Office のインストールを修復してみてください。

    変更を加える前に、必ず作業をバックアップしてください。他にご不明な点がございましたら、お気軽にお問い合わせください。

    よろしくお願いいたします シャローム

    この回答は自動翻訳されています。文法や表現の誤りが発生した場合はご容赦ください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません