こんにちは、Ryoです。
処理を行う中で視覚的に表現したい場合などにAddTextEffectメソッドを利用することでワードアートを作成することができます。テキスト効果の種類としては50種類ありますので、VBAでワードアートを扱う方法やテキスト効果について書いていきたいと思います。
1.サンプル概要
下の画像はテキスト効果15、フォント=Arial、フォントサイズ=28などを設定したもので、それを記述で指定して実行したものです。テキスト効果は0-49の50種類設定できます。

その他のテキスト効果については次項に記載します。
2.サンプルコード
Sub Sample1()
'PresetTextEffect効果15を指定
Worksheets("Sheet1").Shapes.AddTextEffect _
PresetTextEffect:=msoTextEffect15 _
, Text:="Sample Text Effect" _
, FontName:="Arial" _
, FontSize:=28 _
, FontBold:=False _
, FontItalic:=False _
, Left:=10 _
, Top:=20
'Text:文字列を指定
'FontName:フォントを指定
'FontSize :フォントサイズを指定
'FontBold :太字を設定
'FontItalic :斜体を設定
'Left :左端の位置を指定
'Top :上端の位置を指定
End Sub
ワードアートオブジェクトを作成するにはAddTextEffectメソッドを利用します。
構文:AddTextEffect(PresetTextEffect, Text, Fontname, FontSize, FontBold, FontItalic, Left, Top)
引数の詳細については以下の通りです。
| 引数 | 説明 |
| PresetTextEffect | ワードアートの種類を表すMsoPresetTextEffectクラスの値を指定 |
| FontName | フォント名を指定 |
| FontSize | フォントサイズを指定 |
| FontBold | 太字にするにはTrue指定 |
| FontItalic | 斜体にするにはTrue指定 |
| Left | 左端の位置をポイント値で指定 |
| Top | 上端の位置をポイント値で指定 |
テキストエフェクト効果は50種類あり、値を指定しても処理が可能です。
| 名前 | 値 | 画像 |
| msoTextEffect1 | 0 | ![]() |
| msoTextEffect2 | 1 | ![]() |
| msoTextEffect3 | 2 | ![]() |
| msoTextEffect4 | 3 | ![]() |
| msoTextEffect5 | 4 | ![]() |
| msoTextEffect6 | 5 | ![]() |
| msoTextEffect7 | 6 | ![]() |
| msoTextEffect8 | 7 | ![]() |
| msoTextEffect9 | 8 | ![]() |
| msoTextEffect10 | 9 | ![]() |
| msoTextEffect11 | 10 | ![]() |
| msoTextEffect12 | 11 | ![]() |
| msoTextEffect13 | 12 | ![]() |
| msoTextEffect14 | 13 | ![]() |
| msoTextEffect15 | 14 | ![]() |
| msoTextEffect16 | 15 | ![]() |
| msoTextEffect17 | 16 | ![]() |
| msoTextEffect18 | 17 | ![]() |
| msoTextEffect19 | 18 | ![]() |
| msoTextEffect20 | 19 | ![]() |
| msoTextEffect21 | 20 | ![]() |
| msoTextEffect22 | 21 | ![]() |
| msoTextEffect23 | 22 | ![]() |
| msoTextEffect24 | 23 | ![]() |
| msoTextEffect25 | 24 | ![]() |
| msoTextEffect26 | 25 | ![]() |
| msoTextEffect27 | 26 | ![]() |
| msoTextEffect28 | 27 | ![]() |
| msoTextEffect29 | 28 | ![]() |
| msoTextEffect30 | 29 | ![]() |
| msoTextEffect31 | 30 | ![]() |
| msoTextEffect32 | 31 | ![]() |
| msoTextEffect33 | 32 | ![]() |
| msoTextEffect34 | 33 | ![]() |
| msoTextEffect35 | 34 | ![]() |
| msoTextEffect36 | 35 | ![]() |
| msoTextEffect37 | 36 | ![]() |
| msoTextEffect38 | 37 | ![]() |
| msoTextEffect39 | 38 | ![]() |
| msoTextEffect40 | 39 | ![]() |
| msoTextEffect41 | 40 | ![]() |
| msoTextEffect42 | 41 | ![]() |
| msoTextEffect43 | 42 | ![]() |
| msoTextEffect44 | 43 | ![]() |
| msoTextEffect45 | 44 | ![]() |
| msoTextEffect46 | 45 | ![]() |
| msoTextEffect47 | 46 | ![]() |
| msoTextEffect48 | 47 | ![]() |
| msoTextEffect49 | 48 | ![]() |
| msoTextEffect50 | 49 | ![]() |
下のサンプルコードは値を指定して50種類のテキストエフェクトをアクティブシートに出力するものですので、ご参考までに。
Sub Sample2()
Dim i As Integer
Dim strTextEf As String
For i = 0 To 49
strTextEf = "TextEffect" & i + 1
ActiveSheet.Shapes.AddTextEffect _
PresetTextEffect:=i, _
Text:=strTextEf, _
FontName:="Meiryo UI", _
FontSize:=28, _
FontBold:=False, _
FontItalic:=False, _
Left:=10, _
Top:=i * 40
Next i
End Sub
出力結果としては以下のようになります。

3.まとめ
利用頻度や機会はあまり多くないものと思いますが、知っておくと用途によっては役立つこともあるのではないかと思います。
PresetTextEffectは値で指定でき、Textも変数で対応できますので条件に応じて出力するワードアートの切り替えも可能ですが、このような視覚効果は使い過ぎると逆効果にもなりますのでご利用はご注意ください。
以上、ワードアートを作成する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo



















































