PowerPoint VBAでフォームボタンからマクロを実行する方法


command-button

photo credit: Carbon Arc Test monthly -[ HMM ]- via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

PowerPoint VBAで選択している部分のフォントを変更するマクロを作成しています。

前回の記事はコチラ。

PowerPoint VBAで選択した部分を判別してそのフォントを変更するマクロ
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のマクロからはショートカットキーの設定ができない
PowerPointではマクロをショートカットキーに登録する機能がデフォルトではないのです。

エクセルであれば、以下のように「オプション」から「マクロオプション」でショートカットキーにマクロを割り当てられるんですが…

Excelのマクロからショートカットキーの設定をする

Wordでもできますよね。

Word VBAで作成したマクロをショートカットキーに登録する方法
初心者向けにWord VBAで便利な文字入力をするマクロの作り方シリーズ。今回は文書入力しながらサクサク使うために、Word VBAで作ったマクロをショートカットキーに登録する方法をお伝えします!

いろいろと調べてみると、いろいろとやればPowerPointでもショートカットキーにマクロを設定できそうなのですが、ノンプログラマーには少し難しそう…

ということで、フォームのコマンドボタンでマクロの実行を実現することを目指してみようと思います。

PowerPoint VBAでユーザーフォームを使用する

動作イメージとしては、常にフォームで「フォント変更」というボタンを表示しておいて…

  1. フォントを変更したい部分を選択
  2. 「フォント変更」ボタンをクリック

これで、実行できるというものです。

では、その方法を見ていきましょう。

ユーザーフォームの挿入

まず、VBEのメニューから「挿入」→「ユーザーフォーム」で、新規のユーザーフォームを挿入します。

PowerPoint VBAでユーザーフォームの挿入

すると、以下のような画面になります。

PowerPointのユーザーフォーム

この例では、「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でプレゼンテーションを作っている際に、「選択している部分のフォントを好きに変えたい!」ということありますよね。そのニーズに応えるマクロの作り方をシリーズでお伝えしていきます。
  1. PowerPoint VBAでアクティブなウィンドウを取得する方法
  2. PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得
  3. PowerPoint VBAのSelectionオブジェクトの4つのタイプについて理解しよう!
  4. PowerPoint VBAで選択しているスライドを操作するSlideRangeオブジェクト
  5. PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方
  6. PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクト
  7. PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方
  8. PowerPoint VBAで選択しているテキスト範囲のフォントを変更するマクロの作り方
  9. PowerPoint VBAで選択した部分を判別してそのフォントを変更するマクロ
  10. PowerPoint VBAでフォームボタンからマクロを実行する方法

タイトルとURLをコピーしました