- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PowerPointVBA複数ファイル一括について)
PowerPointVBA複数ファイルへの一括日付入力マクロ
このQ&Aのポイント
- PowerPointVBAを使用して、現在開いているpptファイルと同じフォルダ内の全てのpptファイルに対して、1ページ目のサブタイトルに日付を一括で入力するマクロを作成したい。しかし、マクロの実行に時間がかかってしまうため、解決策を探している初心者です。
- 初心者のため、ヘルプやWeb検索でも解決策が見つからず困っています。現在のマクロでは、Forループの繰り返し毎に全てのファイルを開いてしまっているため、実行時間が長くなってしまっています。
- マクロの実行時間を短縮する方法や、効率的な処理方法を教えていただきたいです。初心者にも理解しやすい解説やサンプルコードがあれば助かります。よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
全ファイルが開いてしまっているのは、OpenしてCloseしていないのが原因かと。 取りあえず、サブタイトルを書き込んだあと、 ActivePresentation.Save ' これでファイルを保存 ActivePresentation.Close ' これでファイルをクローズ とすればOKのはず。これで、マクロが終了するまでファイルが開きぱなしという ことはなくなります。 あと、ActivePresentation.Saved = True をつけてマクロを実行済みでしょうか? だとすると、せっかくの変更が保存されずにマクロが終了している可能性が高いです。 普通、変更したけど保存せずに「閉じる」を実施した時に、「変更されてるけど 保存されてないよ。どうすんの?」という意味のダイアログが表示されますよね? 上記は、本当は保存してないけど保存したと嘘をついて、上記ダイアログの表示を 抑制する効果があります。つまり、変更したけど、保存せずにかつダイアログも出力 させずにファイルを閉じたい場合に使用します。 以上
お礼
ありがとうございます! ActivePresentation.Saved = Trueの件、確かめてみると、おっしゃるとおり、 入った変更が保存されずに終わっていたようです。 こちらの行は削除して、お教え頂いた下記をいれたところ、 きちんと変更が保存された状態で閉じられていました。 ありがとうございます_(_ _)_ ActivePresentation.Save ' これでファイルを保存 ActivePresentation.Close ' これでファイルをクローズ ただ、やはり実行時間は変わらず、長々と砂時計が表示され・・(;_;) デバックのステップイン実行で動作を観察すると、 常にForループの繰り返し毎に、 Presentations.Open FileName:=ActivePresentation.Path & "\" & File.Name の行で毎回、ばばばっと、1瞬だけ全ファイル開いて閉じた、みたいな表示がされます。 その後の行では、1ファイルずつ開かれて変更して閉じて・・と希望通りの動作をしてくれてるのですが、、 そういう仕様なのですかね。。素人の疑問ですみません。。
補足
すみません!下の「お礼」を書いてから、気づいたのですが・・・orz 「ばばばっと、1瞬だけ全ファイル開いて閉じた、みたいな表示」という のは・・、そのpptmに含まれているマクロの標準モジュールでした・・。 テストに使っていた同ファイル内のファイルたちが、 実はpptではなく、pptmで、それぞれかなりたくさんの マクロ標準モジュールを持っていたため、開くたびにそれらが、 開きっぱなしのVB Editorにロードされていただけでした。。 マクロを持っていないpptで実行したら、 砂時計など出てこずに実行できました! 大変失礼いたしました。ありがとうございました_(_ _)_