(Wordマクロ・Excelマクロ)テキストボックスを追加する

WordやExcelでテキストボックスを追加する方法のうち、AddTextboxメソッドについて解説します。Selection.CreateTextboxについては、テキストボックスを追加するを参考にしてください。

このページで解説する項目は次の通りです。上から順番に解説します。
②~⑥は引数の説明であり、いずれも指定必須の項目です。




①テキストボックスの追加

解説

Shapes.AddTextboxメソッドには5つの引数があり、以下の例のように指定します(それぞれの引数については後述します)。

使用例

Wordの場合

Public Sub テキストボックスを追加する()
'ActiveDocument
ActiveDocument.Shapes.AddTextbox Orientation:=msoTextOrientationHorizontal, _
Left:=100, Top:=100, Width:=100, Height:=100
End Sub

Excelの場合

Public Sub テキストボックスの追加()
'ActiveSheet
ActiveSheet.Shapes.AddTextbox Orientation:=msoTextOrientationHorizontal, _
Left:=100, Top:=100, Width:=100, Height:=100
End Sub

引数名はもちろん省略可能(下のコードを参照)ですが、可読性を失わないためにできる限り引数名も記載した方がよいでしょう。

Public Sub テキストボックスの追加()
'引数名は省略可能
ActiveDocument.Shapes.AddTextbox msoTextOrientationHorizontal, 100, 100, 100, 100
End Sub

②テキストボックスの方向

引数Orientationで設定します。省略はできません。
MsoTextOrientation列挙体で定義されている7つの定数を指定できますが、その内の1つはサポートされていないため、ここでは実質的に使える6つについて解説します。

列挙体 説明 実際の画像
msoTextOrientationDownward 右へ90度回転
msoTextOrientationHorizontal 横書き
msoTextOrientationHorizontalRotatedFarEast 横書き(左90度回転)
msoTextOrientationUpward 左へ90度回転
msoTextOrientationVertical 左寄せ縦書き(マクロでのみ設定できる)
msoTextOrientationVerticalFarEast 縦書き

通常はmsoTextOrientationHorizontalまたはmsoTextOrientationVerticalFarEastのどちらかを指定すればよいでしょう。

③テキストボックスの左からの位置

引数Leftで設定し、小数での指定が可能です。省略はできません。
通常はポイント単位となりますが、数値の単位を指定することもできます。Wordの数値の単位について、詳しくは(Wordマクロ)数値の単位についてを参照してください。なお、Wordは「Application.MillimetersToPoints」とせずに「MillimetersToPoints」としても動作しますが、ExcelはApplicationを省略できません。また、ExcelはMillimetersToPointsメソッドを指定できないなど、細かな違いがあります。

使用例

Wordの場合

Public Sub テキストボックスの追加()
'数値の単位をmmで指定
ActiveDocument.Shapes.AddTextbox Orientation:=msoTextOrientationHorizontal, _
Left:=MillimetersToPoints(100), Top:=100, Width:=100, Height:=100
End Sub

Excelの場合

Public Sub テキストボックスの追加()
'数値の単位をcmで指定(mmでの指定はできません)
ActiveSheet.Shapes.AddTextbox Orientation:=msoTextOrientationDownward, _
Left:=Application.CentimetersToPoints(10), Top:=100, Width:=100, Height:=100
End Sub

④テキストボックスの上からの位置

引数Topで設定し、小数での指定が可能です。省略はできません。
通常はポイント単位となりますが、数値の単位を指定することもできます。詳しくは、③テキストボックスの左からの位置を参照してください。

⑤テキストボックスの幅

引数Widthで設定し、小数での指定が可能です。省略はできません。
通常はポイント単位となりますが、数値の単位を指定することもできます。詳しくは、③テキストボックスの左からの位置を参照してください。

⑥テキストボックスの高さ

引数Heightで設定し、小数での指定が可能です。省略はできません。
通常はポイント単位となりますが、数値の単位を指定することもできます。詳しくは、③テキストボックスの左からの位置を参照してください。

⑦数値の単位をすべて指定する場合の使用例

次の使用例は、左からの位置を10cm(100mm)、上からの位置を10cm(100mm)、幅を5cm(50mm)、高さを2cm(20mm)と設定する場合の例です。

使用例

Wordの場合

Public Sub テキストボックスの追加()
'数値の単位をmmで指定
ActiveDocument.Shapes.AddTextbox Orientation:=msoTextOrientationHorizontal, _
Left:=MillimetersToPoints(100), Top:=MillimetersToPoints(100), _
Width:=MillimetersToPoints(50), Height:=MillimetersToPoints(20)
End Sub

<実行結果>

Excelの場合

Public Sub テキストボックスの追加()
'数値の単位をcmで指定
ActiveDocument.Shapes.AddTextbox Orientation:=msoTextOrientationHorizontal, _
Left:=CentimetersToPoints(10), Top:=CentimetersToPoints(10), _
Width:=CentimetersToPoints(5), Height:=CentimetersToPoints(2)
End Sub

<実行結果>




⑧補足

描画キャンパスにテキストボックスを追加する場合

CanvasItems.AddTextboxメソッドを利用します。Excelには描画キャンパスが用意されていないため、以下のコードはWord専用となります。
次の使用例は、新たに追加する描画キャンパスにテキストボックスを追加する場合の例です。

使用例

Public Sub 描画キャンパスにテキストボックスを追加する()
Dim shp As Shape

Set shp = ActiveDocument.Shapes.AddCanvas(Left:=MillimetersToPoints(100), Top:=MillimetersToPoints(100), _
Width:=MillimetersToPoints(100), Height:=MillimetersToPoints(100))

shp.CanvasItems.AddTextbox Orientation:=msoTextOrientationHorizontal, _
    Left:=MillimetersToPoints(100), Top:=MillimetersToPoints(100), _
    Width:=MillimetersToPoints(50), Height:=MillimetersToPoints(50)

Set shp = Nothing
End Sub

アンカーを指定する場合

Wordのみ、テキストボックスを追加する際に、どの段落に紐づくものかアンカーを指定することができるよう、anchorというパラメータが用意されています。
しかし、こちらで検証してみたところ、アンカーを指定してもしなくても紐づく段落は常に同じという結果になりました。
私の検証方法が間違っている可能性は否めませんが、WordのVBAでテキストボックスを追加する際にはアンカーの位置指定はできないと考えたほうがよいでしょう。

Selection.CreateTextboxについて

Wordのみの機能です。
長くなりましたので、別記事に分けて記載しました。テキストボックスを追加する(CreateTextbox)を参考にしてください。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください