Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » Unicodeコードポイントを出力するPowerPointマクロ

Unicodeコードポイントを出力するPowerPointマクロ

動作検証バージョン:Windows版PowerPoint(バージョン1908 ビルド11929.20254)

文字列を入力してもらい、それぞれのUnicodeコードポイント(文字コード番号)を出力する場合、VBAのほうがPythonより長いコードを書かなければならないことを確認しました。

文字列をFor Each~Next文で処理できれば行数は少なくなるはずですから、文字列をコレクションとして操作できるPowerPoint VBAで、Subプロシージャを作ってみました。

[スポンサードリンク]

各文字のUnicodeコードポイントを出力するサンプル

アクティブなプレゼンテーションの先頭スライド1番目の図形が、プレースホルダーなど文字列を入力できるタイプのShapeの状態で、以下のSubプロシージャを実行してください。

「文字列を入力されてください:」というインプットボックスが表示され実際に入力すると、入力した文字列の文字、10進表記のUnicodeコードポイント、16進表記のUnicodeコードポイントがイミディエイトウィンドウに出力されます。

Sub 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(コレクション)オブジェクトです。

PowerPoint.TextRange

TextRangeオブジェクトが持つCharactersメソッドで、個々の文字を表すTextRangeオブジェクトを取得できるので、

PowerPoint.TextRange.Characters

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

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » Unicodeコードポイントを出力するPowerPointマクロ

「TextFrame・TextRange」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.