文字列を入力してもらい、それぞれのUnicodeコードポイント(文字コード番号)を出力する場合、VBAのほうがPythonより長いコードを書かなければならないことを確認しました。
文字列をFor Each~Next文で処理できれば行数は少なくなるはずですから、文字列をコレクションとして操作できるPowerPoint VBAで、Subプロシージャを作ってみました。
各文字のUnicodeコードポイントを出力するサンプル
アクティブなプレゼンテーションの先頭スライド1番目の図形が、プレースホルダーなど文字列を入力できるタイプのShapeの状態で、以下のSubプロシージャを実行してください。
「文字列を入力されてください:」というインプットボックスが表示され実際に入力すると、入力した文字列の文字、10進表記のUnicodeコードポイント、16進表記のUnicodeコードポイントがイミディエイトウィンドウに出力されます。
With ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange
.Text = InputBox("文字列を入力してください:")
Dim c As TextRange
For Each c In .Characters
Debug.Print c; AscW(c); Hex(AscW(c))
Next
End With
End Sub
PowerPoint VBAのTextRangeオブジェクトを使っても、コードはそれほど短くなりません。
Pythonの場合、
txt = input('文字列を入力してください:')
for i in txt:
print(i, ord(i), hex(ord(i)))
で済んでしまうシンプルさが際立ちます。
サンプルで行っているPowerPoint VBAの処理
一応、上記PowerPoint VBAのSubプロシージャで行っている処理を確認しましょう。
純粋なVBAでは文字列はString型に過ぎませんが、PowerPointのスライド上に存在する文字列は、TextRange(コレクション)オブジェクトです。
TextRangeオブジェクトが持つCharactersメソッドで、個々の文字を表すTextRangeオブジェクトを取得できるので、
For Each~Nextループで取得した個々の文字、10進の文字コード番号、16進の文字コード番号を出力しています。
Dim c As TextRange
For Each c In .Characters
Debug.Print c; AscW(c); Hex(AscW(c))
出力を行っている
Debug.Print c; AscW(c); Hex(AscW(c))
は、TextRangeオブジェクトの既定プロパティText明示すれば、
Debug.Print c.Text; AscW(c.Text); Hex(AscW(c.Text))
です。
これらの処理を行うためには、プリミティブなVBAの文字列ではなく、PowerPointの文字列にしなければいけませんから、VBAのInputBox関数の戻り値を、アクティブなプレゼンテーションの先頭スライド1番目の図形文字列にしています。
With ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange
.Text = InputBox("文字列を入力してください:")
最終更新日時:2019-09-13 02:47
- Newer:CHOOSE関数で誕生石を
- Older:PythonでUnicodeコードポイント・文字コード番号を
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » Unicodeコードポイントを出力するPowerPointマクロ