三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

PowerPoint マクロ拡張子のpptmをConvert2を使用して別拡張子ppsxスライドショーに変更して保存する

PowerPoint VBA マクロを使用して

.Saveでファイルを上書き保存後、
.Convert2で別拡張子で保存 (マクロの.pptmをスライドショー.ppsxへ)
.Presentations.Openで開き直し
.Closeで別拡張子Convertしたファイルを閉じる
そんな処理の流れです。
#PowerPointVBA #MS365 #デバッグ
youtu.be
https://youtu.be/sE0UswvpEIE
目次
00:00 0.やりたいこと
1.実行する
00:30 1.1 test.pptmが上書き保存
02:08 1.2 test.ppsxをtest.pptmと同じパスに保存されていることを確認
1.3 (同名のファイルがある場合は上書き保存でも可) 上書きしてます。
03:20 2.簡単なコード説明


0.やりたいこと

知恵袋の質問:
detail.chiebukuro.yahoo.co.jp
パワポVBAについて質問です

VBAありのファイル(test.pptm)
>を開いて以下の挙動をマクロ実行したいのですが
>コード例を教えてください

>1. test.pptmを上書き保存
>2. test.ppsxをtest.pptmと同じパスに保存(同名のファイルがある場合は上書き保存でも可)

パワポのバージョンは2016です

にチャレンジしてみます。

1.実行する
Win10 MS365 でテストしてみます。

1.1 test.pptmが上書き保存
されていることを確認するためにスライドを追加して実行

1.2 test.ppsxをtest.pptmと同じパスに保存されていることを確認
ファイルを移動させてチェックする

1.3 (同名のファイルがある場合は上書き保存でも可) 上書きしてます。
修正・追加後、再実行で確認する

2.簡単なコード説明

くだらない、コメントの方が、コードよりも多いけど・・・
下記のコードです。

Sub 別拡張子保存をテスト20230525()

    Dim pp As PowerPoint.Presentation  '自分自身を見失わないように
    Set pp = ActivePresentation        '自分をまず変数に保存するか
    pp.Save  '1.ファイルを上書き保存します
    
    '".pptm" と ".ppsx"のファイル名を作る
    Dim pptmFileName As String  '.pptm 僕の名前
    pptmFileName = pp.Path & "\" & pp.Name
    'ActivePresentation.Path ↑\ と.Nameの方がわかりやすかったか・・・
    
    Dim ppsxFileName As String  '.ppsx スライドショーさんの名前
    ppsxFileName = Replace(pptmFileName, ".pptm", ".ppsx")  '拡張子を置換しただけ

    '別拡張子で保存
    pp.Convert2 ppsxFileName   'Convert2 隠れたメソッド?
    '↑SaveAsでファイルフォーマット指定でもいいのか?同じか?

    '↑これで済めば、苦労しないか・・・
    '.pptm が .ppsx として、残って活躍中
    'コンバート前の僕を開き直す リロードや ぉぃぉぃ ふざけんな
    Application.Presentations.Open pptmFileName
    '↑開き直すと、ActivePresentationが移動するから困ったもんだ
    'まぁ、.Openしたのがアクティブだしね
    
    'これで、上書き保存 → Convert2で.ppsx → .Openで.pptm復活
    '用済みの.ppsxを閉じたい、Convert2 ppsxFileName が ppなので、こっちを閉じる
    pp.Close
    
    '↑.Close後のマクロコードって走るのか?興味あるので実験
    MsgBox "終了、確認してください。二度実行も確認してね"
    '↑やはり、.Close後は走らないのか・・・これでいいのか?
    'んっ?、走る?

End Sub
'----
Sub 別拡張子保存をテスト20230525ふざけたコメ無し()

    Dim pp As PowerPoint.Presentation
    Set pp = ActivePresentation        'まず変数に保存するか
    pp.Save  '1.ファイルを上書き保存します
    
    Dim pptmFileName As String  '.pptm の名前
    pptmFileName = pp.Path & "\" & pp.Name
    
    Dim ppsxFileName As String  '.ppsx スライドショーの名前
    ppsxFileName = Replace(pptmFileName, ".pptm", ".ppsx")  '拡張子を置換

    '別拡張子で保存
    pp.Convert2 ppsxFileName

    'コンバート前.pptmを開き直す
    Application.Presentations.Open pptmFileName
    
    'pp.Convert2 ppsxFileNameの方を閉じる
    pp.Close
    
    '↑.Close後のマクロコードって走るのか?興味あるので実験
    MsgBox "終了、確認してください。二度実行も確認してね"

End Sub

急いでいるのに自己満足の動画やくだらないコメントを見せられたなぁ・・・
コードだけUPしてくれればいいのに・・

この回答を見た人達の声が聞こえてきたところで、逃げるように失礼します。
解決のヒントとなれば幸いです。

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)