TextRangeコレクションをFor Each~Nextループで処理して、Unicodeコードポイント(文字コード番号)をイミディエイトウィンドウに出力するPowerPointマクロをご紹介しました。
Excel VBAの場合、TextRangeオブジェクトはありませんけれど、TextRange2オブジェクトで似たような処理を行うことも可能です。
Unicodeコードポイントを出力するサンプルマクロ
アクティブなブックの先頭シートに、四角形などの、文字列入力可能な図形を作成しておいて、以下のSubプロシージャを実行してみてください。「文字列を入力されてください:」というインプットボックスが表示され、入力された文字列の文字、10進表記のUnicodeコードポイント、16進表記のUnicodeコードポイントがイミディエイトウィンドウに出力されます。
With Sheets(1).Shapes(1).TextFrame2.TextRange
.Text = InputBox("文字列を入力してください。")
Dim c As TextRange2
For Each c In .Characters
Debug.Print c; AscW(c); Hex(AscW(c))
Next
End With
End Sub
イミディエイトウィンドウに出力を行っている、
Debug.Print c; AscW(c); Hex(AscW(c))
の部分は、TextRange2オブジェクトの既定プロパティTextを明示するなら、
Debug.Print c.Text; AscW(c.Text); Hex(AscW(c.Text))
です。
サンプルで行っている処理について
上記のSubプロシージャで行っている処理は、PowerPoint VBAのTextRangeオブジェクトを使う場合とよく似ています。
PowerPoint VBAの場合、スライドを取得していましたが、
With ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange
Excel VBAですからワークシートを取得するコードになっています。
With Sheets(1).Shapes(1).TextFrame2.TextRange
TextRange2オブジェクトについて
このサイト『インストラクターのネタ帳』では、何度もお伝えしていますが、
With Sheets(1).Shapes(1).TextFrame2.TextRange
の部分、TextFrame2オブジェクトのTextRangeプロパティで取得できるのは、TextRange2オブジェクトです。
TextRange2オブジェクトの、Charactersプロパティで取得できるのも、TextRange2オブジェクトです。
最終更新日時:2019-09-12 05:08
- Newer:ウォッチウィンドウでループ処理の途中からステップ実行に
- Older:CHOOSE関数で誕生石を
Home » エクセルマクロ・Excel VBAの使い方 » 図形内文字列 » UnicodeコードポイントをTextaRange2で出力する