質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

2回答

335閲覧

PowerPoint VBA: ページ番号と総ページ数(但し実際のページ数とは異なる)を算出するには

Cystidia

総合スコア16

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2023/05/19 22:45

お世話になります。PowerPoint VBAを初めていじります。

実現したいこと

PowerPoint 365 (Windows)で、現在のページ番号と総ページ番号を表示したい。
ただし、上記「現在のページ番号」「総ページ番号」は実際のスライド数とは異なる。

前提

毎週定期的にプレゼンがあるため、複数の似たようなレイアウトのスライドを何通りか作っています。
そのスライドの右上端に、テキストボックスで「xx枚目 / 全n枚」という表示を入れています。
これらは毎週手打ち(レイアウトを崩したくないので、1枚目のボックスを次頁以降にコピペ→打ち直し)でつけています。

この作業を自動化したいのですが、これにはいくつか条件があります。
・実際のスライド枚数≠枚数を表示したいスライドの数ではないので、上記「ページ番号を表示したいテキストボックス」が存在するページのみカウントして、その総ページ数を上記「n」にしたい
・同じ理由で、上記「xx」はページ番号を表示したいテキストボックスのカウント(現在のボックスは1枚目から数えて何番目のボックスか)としたい
・背景色(貼り付けた写真等を含む)に応じて文字色を変えているので、ボックス自体は自動生成ではなく、別スライドに準備した3通りのテンプレからコピペして手動で貼り付けたい

スライド表示時のタイムラグを極力廃したいので(自分が聴衆だったらそれでイライラしそうなので)、ページ数を算出するタイミングは各スライドの表示時ではなく「スライドの保存時」もしくは「最初の1枚を表示したとき」にしたいと考えています。

発生している問題・エラーメッセージ

該当のソースコード

試したこと

Excel/Access VBAを過去に使っていたため、VBAで何とかなるかと思ったのですが、PowerPoint VBAの仕様がどうにも分からず弱っています。どこに何を書いたら良いかすら分かっておりません。

補足情報(FW/ツールのバージョンなど)

なし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

vba

1Sub sample() 2 Dim sl, sh, k 3 With CreateObject("Scripting.Dictionary") 4 For Each sl In ActivePresentation.Slides 5 For Each sh In sl.Shapes 6 If sh.Name Like "TextBox*" And sh.Left > 700 And sh.Top > 300 Then .Add .Count + 1, sh 7 Next sh, sl 8 For Each k In .Keys 9 .Item(k).TextFrame.TextRange.Text = k & "/" & .Count 10 Next 11 End With 12 End Sub

投稿2023/07/10 11:30

jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Cystidia

2023/07/10 12:09

ありがとうございます!試してみます! 質問したにもかかわらず、その後全く手をつけられていませんでした。
guest

0

リファレンスは見ていますか?
https://learn.microsoft.com/ja-jp/office/vba/api/overview/powerpoint
「マクロの記録」機能が無いのでちょっとつらいですが、Excel VBAで図形を扱った経験があればリファレンスを見ればわかるかと思います。

「ページ番号を表示したいテキストボックス」を他のテキストボックスと何を以て区別するかは考える必要がありますが、

VBA

1ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text

で、ページ1の最初の図形のテキストを参照・代入出来ます。

投稿2023/05/19 23:38

otn

総合スコア84645

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/05/19 23:58

実行を手動でなく、「ファイルを開いたときに自動実行」したいということであれば、Excelのように簡単にはいかないようですが、「vba ファイルを開いたとき powerpoint」で検索すると方法はあるようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問