「excel vba word テキストボックス取得」
という検索キーワードでアクセスがありました。
「テキストボックス取得」と表現されているのが、本当のところ何なのかわかりませんので、参考になりそうな簡単なExcelマクロをご紹介します。
Wordのテキストボックスを取得するExcelマクロ
テキストボックスに文字列の入力されているWordファイルが1つ開かれている状態で、以下のExcelマクロを実行してください(参照設定は不要です)。
On Error GoTo ErrHandl
With GetObject(Class:="Word.Application")
Dim shp As Object ' Word.Shape
For Each shp In .ActiveDocument.Shapes
If shp.Type = msoTextBox Then
MsgBox shp.TextFrame.TextRange.Text
End If
Next
End With
Exit Sub
ErrHandl:
Select Case Err.Number
Case 429
MsgBox "Wordが起動していないようです。"
Case 4248
MsgBox "Wordファイルが開かれていないようです。"
Case Else
MsgBox Err.Description & vbCrLf & Err.Number
End Select
Err.Clear
End Sub
Word文書内のテキストボックスに入力されている文字列が、順番にメッセージボックスに表示されます。
サンプルマクロで行っている処理について
アクティブ文書内に存在するテキストボックスに入力されている文字列を、イミディエイトウィンドウに出力するWordマクロをご紹介しています。ご紹介済みのWordマクロと基本構造は同じで、Excel VBAからWordを操作するためにコードをいくつか追加しています。
VBAのGetObject関数を使って、起動済みWord.Applicationへの参照を取得します。
With GetObject(Class:="Word.Application")
Word.Applicationへの参照が取得できてしまえば、実質的にWord VBAです。
アクティブ文書内の全ShapeにFor Each~Nextループを回して、テキストボックスだったら、テキストボックス内の文字列をメッセージボックスに表示しています。
Dim shp As Object For Each shp In .ActiveDocument.Shapes If shp.Type = msoTextBox Then MsgBox shp.TextFrame.TextRange.Text
ShapeオブジェクトはExcel VBAにも存在しますが、ここで使っているのはWordのShapeで参照設定を行っていない前提ですから、
Dim shp As Object
と宣言しています。また、ActiveDocumentプロパティはWordのプロパティですから、
For Each shp In .ActiveDocument.Shapes
の部分「ActiveDocument」の直前の「.」が必須です。
Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWordのテキストボックスを取得する