VBA を扱うときは、範囲を考慮してから、指定された範囲のプロパティを考慮する必要があります。ここに、あなたが望むことをするサンプルコードがあります:
Private Sub CommandButton1_Click()
Set Object = ActiveDocument.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, Left:=10, Top:=10, Width:=80, Height:=80)
With Object.TextFrame.TextRange
.Text = "Hi my name is Koki"
With .Characters(2).Font
.ColorIndex = wdTurquoise 'http://msdn.microsoft.com/en-us/library/office/aa195611(v=office.11).aspx
End With
With .Characters(12).Font
.ColorIndex = wdTurquoise
End With
With .Characters(18).Font
.ColorIndex = wdTurquoise
End With
End With
End Sub
ご覧のとおり、最初にテキストボックスを追加しています。正しい textBox を使用していることを確認するためにこれを行っています (ActiveX テキストボックスを追加すると、動作が異なります)。
- - - - - アップデート
提案された方法論に依存するには、Document Open イベントを使用して任意の図形を削除し、必要な図形を書き込む必要がある場合があります。例えば:
Private Sub Document_Open()
For i = ActiveDocument.Shapes.Count To 1 Step -1
ActiveDocument.Shapes(i).Delete
Next i
Set Object = ActiveDocument.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, Left:=10, Top:=10, Width:=80, Height:=80)
End Sub
このコードは、ドキュメントが開かれたときに呼び出され、作成したすべての図形 (commandButton などの ActiveX オブジェクトではない) を削除し、テキスト ボックスを追加します。Object
変数をグローバルに宣言して、コード内のどこからでもアクセスできます (CommandButton1_Click()
たとえば、 )。
これは、必要なものを取得するための回避策の例であることに注意してください。指定された形状を削除する必要はありません。このコードを使用して、ドキュメントの開始時に何をすべきかを確認できます。「必要な名前」という形状がある場合は、そこに置いて実行しないでください。何でも、それをグローバルObject
変数に設定するだけです。
Private Sub Document_Open()
For i = ActiveDocument.Shapes.Count To 1 Step -1
If(ActiveDocument.Shapes(i).Name = "the name I want") Then
Set Object = ActiveDocument.Shapes(i)
Exit Sub
End If
Next i
Set Object = ActiveDocument.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, Left:=10, Top:=10, Width:=80, Height:=80)
End Sub