Powerpoint VBAを使おう!

Powerpoint VBAやExcelのVBAで遊んでいます。Word VBAも始めました。

Powerpoint VBA 上付き文字の調整マクロ(イベント利用)

効率的には 以前書いた

blog.powerpointvba.club

こちらのほうが,絶対使い勝手はいいんですが,改善させれれば面白いかもなぁと思いイベントと絡めて上付き文字の相対位置を50%にするマクロを書いてみました。

今,酸化還元の教材作成中で,とにかくひたすら上付き文字が登場します。

電子のe^-とか MnO_4^- とかです。_の直後は下付きにしたい,^の直後は上付き文字にしたいやつです。

平打ちして後で変換させてもいいのか。。また考えるか。。

実用的ではないにしろ,イベントの使い方とか,自分が完璧に忘れていたのでそういう意味でも書いておきます。

標準モジュール

Option Explicit
Private cls As AppEvent

Sub スタート()

Set cls = New AppEvent
Set cls.App = Application

End Sub

クラスモジュール AppEvent.cls

Option Explicit

Public WithEvents App As Application

Private Sub App_WindowSelectionChange(ByVal Sel As Selection)
    On Error GoTo Escape
    
    Dim tr As TextRange
    With Sel
        For Each tr In .TextRange.Runs
            If tr.Font.Superscript = msoTrue Then
                tr.Runs.Font.BaselineOffset = 0.5
            End If
        Next
    End With
    Exit Sub
Escape:
End Sub

パワーポイントの場合は残念ながら自動的にイベントは発生しませんので,それをスタートさせるために スタート というマクロを標準モジュールに準備
スタートを実行させた後はしばらくはイベントが発生しています。表現が曖昧ですみません。

選択部分が変更されたとき,というイベント部分にコードを書きこんでいます。
選択部分を限定するのが面倒だったため,今回は 極めて大雑把な方法でエラーを無視しています。 On error Goto でふっとばしています。

選択部分に 上付き文字を見つけたら,相対位置を50%にするよ,というのが中身です。 (BaselineOffset のとこ)

動かしているとこんな感じになります。
f:id:chemiphys:20170505130216g:plain

微妙な違いが見えますでしょうか。。事前に上付き文字にしている(相対位置30% デフォ)が 選択し終わったら上にすこーし上がります。(相対位置50%)

イベントを利用しているのである程度自動化でき・・る・・・。

まぁ,最初に書いたように,作り終わった後まとめてやればいいことなんです。

または,平打ちしたものを編集させるようにマクロを組むのもいいですよね。。そちらの方がいいかなぁ。

上付き文字を適用したときをイベントで捕捉して勝手に50%にする,というのを本当はやりたかったんですが,そういうイベントは見つけきれませんでした。

何かの役に立つこともあるかもしれないということで,これ自身は実用性に乏しいですが,書いてみました(;´・ω・)