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