Office関連

PowerPointスライドショー終了後ファイルを閉じるVBAマクロ

Excel VBA PowerPoint スライドショー後閉じる」といったキーワードでのアクセスがありました。

ExcelからマクロでPowerPointファイルを開いてスライドショーを実行、スライドショーが終わったらそのファイルを閉じる、そんな作業を行いたいのだろうと思います。

PowerPointファイルを閉じた後もそのままマクロで処理を続行したいのか、スライドショーが終わればそのままマクロの処理も終わるのかで大分処理が変わってきますが、とりあえず、そのままマクロでの処理を続行したい場合は下記のようなコードで対応できます。

Public Sub Sample()
  Const ppSlideShowDone = 5
  
  With CreateObject("PowerPoint.Application")
    .Visible = True
    With .Presentations.Open(Filename:="C:\Test\Sample.pptx")
      With .SlideShowSettings.Run.View
        'スライドショー終了待ち
        Do Until .State = ppSlideShowDone
          DoEvents
        Loop
      End With
      .Close
    End With
    .Quit
  End With
  Debug.Print "処理が終了しました。"
End Sub

スライドショーが終わるまでループで待つ形ですね。
(スライド数が多い場合には、待ち処理にSleepを入れた方が良いです。)

下記のようにSlideShowWindowオブジェクトの数で判断することもできます。

Public Sub Sample2()
  Dim pres As Object
  
  With CreateObject("PowerPoint.Application")
    .Visible = True
    Set pres = .Presentations.Open(Filename:="C:\Test\Sample.pptx")
    pres.SlideShowSettings.Run
    'スライドショー終了待ち
    Do Until .SlideShowWindows.Count < 1
      DoEvents
    Loop
    pres.Close
    .Quit
  End With
  Debug.Print "処理が終了しました。"
End Sub

そして今度はスライドショーが終わったらそのままマクロの処理も終わる場合ですが、これは単にPowerPointファイルを開くと同時にスライドショーを実行すれば良いので、下記のようにコマンド ライン スイッチで対応することができます。

Public Sub Sample3()
  Const PptFilePath As String = "C:\Test\Sample.pptx"
  Shell "POWERPNT.exe /S """ & PptFilePath & """"
End Sub

ファイル形式をスライド ショー形式(*.ppsx、*.ppsm、*.pps)にしておけば、コマンド ライン スイッチすら不要になります。

Public Sub Sample4()
  CreateObject("Shell.Application").ShellExecute "C:\Test\Sample.ppsx"
End Sub

以上、PowerPoint以外のOfficeアプリケーションからスライドショーを実行して、スライドショーが終わったらファイルを閉じるマクロの紹介でした。

関連記事

  1. Office関連

    Excel REST APIをPowerShellから呼び出す方法

    以前Excel REST APIをVBAから呼び出す方法を紹介しました…

  2. Office関連

    PowerPointの自動実行マクロ

    ExcelのAuto_OpenやWordのAutoOpenのように、P…

  3. Office アドイン

    [Office用アプリ]Random Data Generator

    Random Data Generatorはテスト用の個人情報データを…

  4. Office関連

    マクロで実行したいコマンドのIDを調べる簡単な方法

    MSDN フォーラムに下記質問がありました。・Excel-VB…

  5. Office関連

    RSSの日付を変換するVBAマクロ

    RSSから取得した日付(「Wed, 20 Dec 2017 00:02…

  6. アイコン一覧

    Office 365アイコン(imageMso)一覧(B)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP