静岡県三島市の税理士、松井元(@hajime_matsui)です。
こんにちは!
最近VBAについての記事を書いていなかったので、誰かのお役に立つかもなぁ、と思えるVBAコード(マクロ)を残しますね。
パワーポイント(Powerpoint)上で、図形を移動させるマクロです。
パワーポイントで図形(オブジェクト)を指定した場所まで移動するマクロ(Powerpoint VBA)
パワーポイント上の図形のことをオブジォクトと言います。
オブジェクトが何か?ということについてはこちらの記事↓ を参考にして下さい。
マクロ(Excel VBA)を勉強しだしてしばらくしてから、「オブジェクト」の壁にぶち当たりました。「オブジェクト」という概念が何か? しばらくの間ほんっと〜に分からなかったのです。今日は、自分自身が理解するのにかなり苦戦した「オブジェクト」について、自分なりの説明をしたいと思います。1、オブジェクトとはオブジェクト(object)というのは、「操作対象」のことを言います。Excel VBA での「操作対象」としては、例えば以下のようなものがあります。・ワークブック・ワークシート・セル・図形・グラフ・インターネットエ... なかなか理解できなかったマクロ(Excel VBA)の「オブジェクト」について、セルの... - はじめろぐ |
図形をオブジェクトとして移動させてみたいと思います。
複数のスライドに配置してある同じ図形を、一括で指定した場所まで移動させます。
以下のように、3枚全てのスライド上に四角形を置いてある前提とします。
この四角形をスライドの左上の枠外に移動させてみます。
図形(オブジェクト)に名前を付ける
まず、オブジェクトである四角形に名前を付けておく必要があります。
図形を選択した状態で「選択」の「オブジェクトの選択と表示」をクリックします。
すると、右側にウインドウが出てくるのでここで「正方形/長方形1」と書かれた部分を選択して、図形の名前を付けます。
自分が好きな名前を付けましょう(変更しなくても良いです。そのままにした場合、名前は「正方形/長方形1」となります)。
好きな名前を入力した後にEnterキーを押すことを忘れないようにしましょう。Enterキーを押さないと変更されません。
今回の題材は、3ページのスライド全てにこの図形を置いておく前提なので、他のページの図形も同じ名前にしておきましょう。
言い方を変えれば、1つのページで名前を付けた図形をコピペすると良いでしょう。
マクロ実行結果
マクロを実行前後でどのように変わるか? というと
最初は3つすべてのページの枠内に四角形がある状態ですが、実行することでこれらすべてが枠外に移動します。
実行すると、3つのページすべての四角形がこのように枠外に移動しています↓
全VBAコード
上記の内容を実現する、全VBAコードを以下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Sub Zukei_Move() Dim Left_Loc As Long Dim Top_Loc As Long Left_Loc = -200 '移動先のスライドの左端からのポイント数' Top_Loc = -200 '移動先のスライドの上端からのポイント数' For Each Slide In ActivePresentation.Slides For Each Zukei In Slide.Shapes If Zukei.Name Like "*移動用長方形*" Then Zukei.Left = Left_Loc 'スライドの左端を指定' Zukei.Top = Top_Loc 'スライドの上端を指定' Else End If Next Next End Sub |
VBAコード説明
VBAコードの主要な部分を説明しますね。
移動先の位置
移動先の位置を変数で指定します。
「Left_Loc」を左端の位置、「Top_Loc」を右端の位置としています。
1 2 |
Left_Loc = -200 '移動先のスライドの左端からのポイント数' Top_Loc = -200 '移動先のスライドの上端からのポイント数' |
位置はスライドの左上の端が基準となっており、
・左右の位置は+で指定すれば右側、ーで指定すれば左側
・上下の位置は+で指定すれば下側、ーで指定すれば上側
となります。
希望する移動先がどの当たりになるか、変数に入れる数値を代えながら確認すると良いでしょう。
For Each 文での繰り返し
すべてのスライドの全部の図形を調べて、名前が「移動用長方形」の場合に、最初に指定した場所まで移動させるものです。
スライドも図形もオブジェクトとして扱います。
以下のように書くことで、すべてのスライドに対して処理することできます。
処理
Next
すべてのスライドのことは「ActivePresentation.Slides」と表記します。
個々のスライドについては、自分で変数を置きます。
今回は変数名を「Slide」としています。
また、次のように書くことでスライドの中のすべての図形をに対して処理することができます。
処理
Next
すべての図形は「Slide.Shapes」と表記します。
個々の図形については、自分で変数を置きます。
今回は変数名を「Zukei」と表記しています。
図形の判定
図形の名前が「移動用長方形」の場合に位置を変更します。
名前の判定にはif文を使っています
1 2 3 4 5 6 7 |
If Zukei.Name Like "*移動用長方形*" Then Zukei.Left = Left_Loc 'スライドの左端を指定' Zukei.Top = Top_Loc 'スライドの上端を指定' Else End If |
Likeを使ってあいまい検索という方法を使っています。
If と Like を使って、以下のように記述します。
処理
Else
Endif
これにより、変数に「文字列」が含まれる場合に処理を実行する
という内容になります。
あいまい検索については、こちらの記事も参考にして下さい↓
Excel VBA(マクロ)で、If 文を使うことがあります。If 文は「もしこうだったらこうする」と条件に一致する場合に、指定した処理をさせるためにあります。さて、今日はこの If 文を使ってあいまい検索する事例を取り上げたいと思います。1、If 文の使い方まずは、If 文の使い方について、通常の使い方とあいまい検索をする方法を紹介します。通常の使い方Excel VBA で If 文を使う場合、以下のように記述します。If 条件1 Then 処理①ElseEndifこれで、「条件1 に該当する場合に処理①を行う」という命令になります。例えば、... Excel VBA(マクロ) LIKE によるあいまい検索で現金出納帳の摘要から科目を割り当... - はじめろぐ |
今回のコードでは、図形の名前(Zukei.Name)に「移動用長方形」という文字列が含まれる場合に移動するようにしているわけです。
図形の位置変更
If文で条件を満たした図形を移動させるわけですが、移動先は左端と上端の位置で指定しています。
左端は「Zukei.Left」と表記し、上端は「Zukei.Top」と表記します。
1 2 |
Zukei.Left = Left_Loc 'スライドの左端を指定' Zukei.Top = Top_Loc 'スライドの上端を指定' |
まとめ
パワーポイントで図形(オブジェクト)を指定した場所まで移動するマクロ(Powerpoint VBA)を紹介しました。
是非参考にして頂ければと思います。
編集後記
昨日(2/28)は午前中は西伊豆方面で、新規に確定申告を対応させて頂くお客様と打合せに行きました。
確定申告に向けての不明点を質問対応させて頂きました。
帰り途中で食べたお昼ご飯▼