インストールレスプログラミング( ´ー`)

VBA , JavaScript , HTAなど 365アプリはインストール必要ですが、仕事に無いケースはほぼないから(・_・;)

Powerpoint VBA 表のそれぞれのセルの文字に処理を行う

さっきの続きです。

ひさびさにPowerpointのVBAのことが書けるのでとても気分がいいです。

タイトル詐欺になるので!

やっていることはさっきの続きで,たくさんのセルや文字があるので,こういう時こそマクロの出番だよ,というものです。

教材作成と並行していますので,勢いで書いています。スミマセン。

コードはこちら。さくっと使えるようにということで,選んだテーブルに処理を行います。

Sub 書式調整()
    Dim TargetTable As Table: Set TargetTable = ActiveWindow.Selection.ShapeRange.Table
        
    Dim r As Row, c As Cell, tr As TextRange
    For Each r In TargetTable.Rows
        For Each c In r.Cells
            For Each tr In c.Shape.TextFrame.TextRange.Characters
                If tr = Chr(11) Then tr.Delete
                If IsNumeric(tr) = True Then
                    tr.Font.Size = 12
                    tr.Font.Subscript = msoTrue
                Else
                    tr.Font.Size = 14
                End If
                
            Next
        Next
    Next
        
End Sub

For Eachだらけですね(ΦωΦ)好きなんです。

Table → Rows → Cells → Characters → 各Character (オブジェクトとしてはTextRangeオブジェクトになります)
と全てコレクションオブジェクトなので,For eachで降りていけます。RowsはColumnsでもいけるようです。
アクセスする順番は変わりますけど。。

たまたまわたしがやったやつでは, 改行が Chr(11)でしたので,邪魔なので削除しています。

数字は小さくしたかったので IsNumericで判断して,小さくし,さらに下付き(SubScript)にしています。

そうでなかったらSizeを14にする。

あとは数値をトライアンドエラーで自分好みのサイズの組み合わせにしていきます。

f:id:chemiphys:20170327224624p:plain
※テキストが 金属と非金属逆でした ハズカシ(;´▽`A`` 修正

私好みな感じになりました。

こんなのいちいちやっていると大変なので,これはマクロの出番ですね。