みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
PowerPoint VBAで選択している部分のフォントを変更するマクロを作成しています。
前回の記事はコチラ。
選択している部分を判別して、そのフォントを変更するマクロを作成しました。
…てか、もう完成じゃん。
という感じなのですが、実はちょっとその操作性にまだ課題がありました。
だって、マクロを実行するの、面倒なんですもん。
ということで、今回はそれを解決していきます。
PowerPoint VBAでフォームボタンからマクロを実行する方法をお伝えします。
では、行ってみましょう!
前回までのおさらい
では、前回までで作成したマクロを紹介します。
まずコチラがメインのマクロですね。
Sub 選択箇所のフォントを変更()
With ActiveWindow.Selection
Select Case .Type
Case ppSelectionText
Call フォントの変更(.TextRange.Font)
Case ppSelectionShapes
Call シェイプのフォントの変更(.ShapeRange)
Case ppSelectionSlides
Dim sld As Slide
For Each sld In .SlideRange
Call シェイプのフォントの変更(sld.Shapes)
Next sld
End Select
End With
End Sub
実行すると、選択の状態に合わせてSelect Case文で分岐して、各状態に応じて必要な処理を行います。
シェイプのコレクションを渡して、ループを回してくれるのが、以下プロシージャです。
Sub シェイプのフォントの変更(objShapes As Object)
Dim shp As Shape
For Each shp In objShapes
Call フォントの変更(shp.TextFrame.TextRange.Font)
Next shp
End Sub
そして、最終的に各シェイプのFontオブジェクトを渡して、その設定をするのが以下のプロシージャです。
Sub フォントの変更(objFont As Font)
With objFont
.Name = "Meiryo UI"
.NameFarEast = "Meiryo UI"
.Color = RGB(89, 89, 89)
End With
End Sub
このマクロを実行すると、その選択状態に応じて、スライド、シェイプ、テキストのフォントを変更してくれます。
PowerPointマクロはショートカットキーへの設定が難しい
それで、「Sub 選択箇所のフォントを変更()」を、リボンの「マクロ」からショートカットキーに設定すればOK!
…と思うのですが、以下に示すとおり、PowerPointのリボンで「開発」→「マクロ」でマクロダイアログを開いても、「オプション」がありません。
PowerPointではマクロをショートカットキーに登録する機能がデフォルトではないのです。
エクセルであれば、以下のように「オプション」から「マクロオプション」でショートカットキーにマクロを割り当てられるんですが…
Wordでもできますよね。
いろいろと調べてみると、いろいろとやればPowerPointでもショートカットキーにマクロを設定できそうなのですが、ノンプログラマーには少し難しそう…
ということで、フォームのコマンドボタンでマクロの実行を実現することを目指してみようと思います。
PowerPoint VBAでユーザーフォームを使用する
動作イメージとしては、常にフォームで「フォント変更」というボタンを表示しておいて…
- フォントを変更したい部分を選択
- 「フォント変更」ボタンをクリック
これで、実行できるというものです。
では、その方法を見ていきましょう。
ユーザーフォームの挿入
まず、VBEのメニューから「挿入」→「ユーザーフォーム」で、新規のユーザーフォームを挿入します。
すると、以下のような画面になります。
この例では、「UserForm1」というオブジェクト名のユーザーフォームが追加されました。
このユーザーフォーム上に要素(コントロールといいます)を配置したり、プロパティの設定ができるようになります。
ユーザーフォームの設定をする
では、まずこのユーザーフォームのタイトル表示となるキャプションと、サイズを変更しましょう。
左下の「プロパティ」ウィンドウには、オブジェクト「UserForm1」のプロパティが一覧されています。
このウィンドウを使って、各プロパティを直接編集できるんですね。
フォームのタイトルと表示される「Caption」プロパティを「便利ツール」に変更をします。
また、今回設置するボタンは一つだけなので、今のままではフォームが大きすぎる…ということで、右下の□ポッチをつかんでドラッグしてサイズをいい感じに変更しておきます。
ユーザーフォームにコマンドボタンを配置する
続いて、このフォーム上にクリックできるコマンドボタンを設置していきましょう。
「ツールボックス」ダイアログには、配置できるコントロールのアイコンが並んでいまして、その中の「コマンドボタン」をクリックします。
その上で、フォーム上でドラッグをすると、そのサイズにコマンドボタンを設置することができます。
コマンドボタンの設定をする
次に、設置したコマンドボタンの設定をしていきます。
コマンドボタンをクリックすると、プロパティウィンドウはそのコマンドボタンのプロパティ一覧に切り替わります。
まず表示名である「Caption」を「フォント変更」に設定、次に「Font」の「…」をクリックしてフォントダイアログを開いてフォントの設定をします。
フォント名を大好きな「Meiryo UI」にして、サイズを18に設定して「OK」としました。
これで、ユーザーフォームとコマンドボタンの設置が完了です。
コマンドボタンのクリックで実行するマクロを記述する
次に、コマンドボタンのクリックで実行するマクロを書いていきましょう。
ユーザーフォームのコマンドボタンをダブルクリックすると、コードウィンドウが開きUserForm1にコードを書くことができるようになります。
まず、以下のように表示されているはずです。
Private Sub CommandButton1_Click()
End Sub
これは、「CommandButton1」をクリックしたイベント時に動作するプロシージャです。
前回までに作成した「選択箇所のフォントを変更」マクロを実行させたいので、以下のようにCallステートメントで呼び出すようにしてあげましょう。
Private Sub CommandButton1_Click()
Call 選択箇所のフォントを変更
End Sub
フォームをモードレスで表示する
また、このユーザーフォームを開くためのプロシージャが必要ですので、標準モジュールのほうに以下のプロシージャを追加します。
Sub フォーム表示()
UserForm1.Show vbModeless
End Sub
Showメソッドの引数として「vbModeless」を設定すると、「モードレス」でユーザーフォームを開いてくれます。
モードレスというのは、フォームが表示されている状態でも、プレゼンテーションの操作ができるようにするというモードです。
これを設定しないと「モーダル」で表示されますが、この場合はフォームを閉じないとプレゼンテーションの操作ができないのです。
ユーザーフォームのコマンドボタンからマクロを実行する
では、テストをしてみましょう。
「フォーム表示」を実行してみると、プレゼンターション上にフォームが表示されます。
何かしらかを選択して、「フォント変更」ボタンをクリックします。
すると、以下のように選択している部分のフォントの変更が確認できました。
まとめ
以上、PowerPoint VBAでフォームボタンからマクロを実行する方法をお伝えしました。
これで、常に表示されているボタンをクリックするだけで、選択している部分のフォント変更ができるようになりました。
ぜひご活用くださいね!
連載目次:初心者向けPowerPoint VBAで選択箇所を操作する
PowerPointでプレゼンテーションを作っている際に、「選択している部分のフォントを好きに変えたい!」ということありますよね。そのニーズに応えるマクロの作り方をシリーズでお伝えしていきます。- PowerPoint VBAでアクティブなウィンドウを取得する方法
- PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得
- PowerPoint VBAのSelectionオブジェクトの4つのタイプについて理解しよう!
- PowerPoint VBAで選択しているスライドを操作するSlideRangeオブジェクト
- PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方
- PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクト
- PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方
- PowerPoint VBAで選択しているテキスト範囲のフォントを変更するマクロの作り方
- PowerPoint VBAで選択した部分を判別してそのフォントを変更するマクロ
- PowerPoint VBAでフォームボタンからマクロを実行する方法