何やらTwitterでPowerPointVBAネタがよく流れてくるので便乗してみる。
と言っても新規ネタは無いので昔Webサイトに掲載した内容の再掲。
パワーポイントVBA - You.Activate
(サイトの方のアクセスは微量なのでなかなか日の目を見ない。)
フローチャート等でコネクタだけor画像だけを選択するマクロ
パワポでフロー図を作ることもよくあると思うけれど、後から図形の枠線だけ色を変えたいとか、コネクターの線だけ太くしたいとかいうことってよくある。
そうするためには例えばCtrl + クリックでコネクタだけをチマチマ選択していく必要があるが、数が多いととても面倒くさい。
次に紹介するマクロを使うとマウスドラッグで範囲選択した後に図形かコネクターかどちらか不要な方を一発で選択解除できる。
コードはこちら。
※このころの私はマルチバイト識別子がマイブーム
Sub選択除外_図形のみ選択()Call選択除外(True)EndSubSub選択除外_コネクターのみ選択()Call選択除外(False)EndSubPrivateSub選択除外(非コネクター AsBoolean)'シェイプが選択されていなければ、処理を中断する。IfNot ActiveWindow.Selection.Type= ppSelectionShapes ThenExitSub'残すシェイプのリストを準備Dim残すリスト()AsStringReDim残すリスト(0)Dim図 As Shape ForEach図 In ActiveWindow.Selection.ShapeRange If図.Connector Xor非コネクター Then'残すシェイプの末尾に図の名前を追記残すリスト(UBound(残すリスト))=図.Name'次の追記用にリストを1つ拡張ReDimPreserve残すリスト(UBound(残すリスト)+1)EndIfNext'ループで一個作りすぎるので、最後にマイナス1するReDimPreserve残すリスト(UBound(残すリスト)-1)Dim現在のスライド As Slide Set現在のスライド = ActiveWindow.Selection.SlideRange(1)'残すリストの図形を選択しなおす。現在のスライド.Shapes.Range(残すリスト).SelectEndSub
複数シェイプ上の番号を簡単に増減する
フローチャート等でプロセスごとに番号を振っていて、例えば間にプロセスを挿入したり削除した場合、後続の番号が全部ずれ込んでチマチマ修正する羽目になる。
とても面倒なので、選択範囲のシェイプに書かれた番号を一括で増減できるマクロを作った。
Sub番号プラス()Call番号増減(1)EndSubSub番号マイナス()Call番号増減(-1)EndSubPrivateSub番号増減(数値)'シェイプが選択されていなければ、処理を中断する。IfNot ActiveWindow.Selection.Type= ppSelectionShapes ThenExitSubDim図 As Shape ForEach図 In ActiveWindow.Selection.ShapeRange If図.HasTextFrame ThenIf図.TextFrame.HasText ThenWith図.TextFrame.TextRange 'Asc関数にテキストを入れると1文字目の文字コードを返す。'それに指定された数値を足してChrで文字に戻したあと、'2文字目以降を結合。.Text =Chr(Asc(.Text)+数値)&Mid(.Text,2)EndWithEndIfEndIfNextEndSub
PowerPointVBAでお勧めのページ
いつも隣にITのお仕事
「PowerPoint・VBA」の記事一覧 | いつも隣にITのお仕事
こちらは「ExcelVBAを実務で使い倒す技術」の著者であるタカハシさんのサイトのPowerPointカテゴリーの記事。
初心者向けに分かりやすく書かれている。

- 作者:高橋宣成
- 出版社/メーカー:秀和システム
- 発売日: 2017/04/20
- メディア:単行本
- この商品を含むブログ (1件) を見る
PowerpointVBAを使おう!
chemiphys.hateblo.jp
こちらは理科の教員をされているchemiphysさんのサイト。
PowerPointVBAでものすごい高度なことやってる。
特に下の2つは私の中では伝説級。