Wordの文書内にあるテキストボックスから文字列を取得したいと思ったことはありませんか?特に、手作業でコピー&ペーストを繰り返すのは面倒ですよね。そんなときに便利なのが、VBA(Visual Basic for Applications)を使った自動化です。今回は、初心者の方でもわかりやすいように、VBAを使ってWordのテキストボックスから文字列を取得する方法をご紹介します。
VBAとは?
VBAは、Microsoft Office製品(WordやExcelなど)に組み込まれているプログラミング言語です。これを使うことで、日常的な作業を自動化したり、複雑な処理を簡単に行ったりすることができます。
テキストボックスとは?
テキストボックスは、文書内に自由に配置できる文字入力用の枠です。例えば、ポップアップのような吹き出しや、コメント欄などに使われます。これらのテキストボックスに入力された文字列を取得することで、文書の内容を効率的に整理・抽出することができます。
VBAでテキストボックスの文字列を取得する方法
それでは、実際にVBAを使ってテキストボックスの文字列を取得する方法を見ていきましょう。以下の手順で進めます。
VBAエディタを開く
まず、Wordを開きます。そして、キーボードの「Alt」キーを押しながら「F11」キーを押すと、VBAエディタが開きます。
新しいモジュールを追加する
VBAエディタが開いたら、左側の「VBAProject(あなたの文書名)」を右クリックし、「挿入」→「モジュール」を選択します。これで、新しいモジュールが作成されます。
コードを入力する
新しく作成されたモジュールに、以下のコードを入力します。
Sub テキストボックスの文字列を取得()
Dim shp As Shape
For Each shp In ActiveDocument.Shapes
If shp.Type = msoTextBox Then
MsgBox shp.TextFrame.TextRange.Text
End If
Next shp
End Sub
このコードは、文書内のすべての図形(Shapes)を順番に調べ、テキストボックス(msoTextBox)であれば、その中の文字列をメッセージボックスで表示するものです。
マクロを実行する
コードを入力したら、キーボードの「F5」キーを押すか、VBAエディタのツールバーにある「実行」ボタンをクリックします。すると、文書内のテキストボックスに入力された文字列が順番にメッセージボックスで表示されます。
注意点
* このコードは、文書内のすべてのテキストボックスを対象としています。特定のテキストボックスのみを対象にしたい場合は、条件を追加する必要があります。
* テキストボックスが空の場合、何も表示されません。
* 複数のテキストボックスが重なっている場合、最前面のテキストボックスのみが対象となります。
まとめ
VBAを使うことで、Wordの文書内にあるテキストボックスから簡単に文字列を取得することができます。これにより、手作業でのコピー&ペーストの手間を省き、効率的に作業を進めることができます。ぜひ、今回ご紹介した方法を試してみてください。
よくある質問や疑問
Q1: テキストボックスの文字列を別の文書に書き出すことはできますか?
はい、可能です。取得した文字列を新しい文書に追加することで、別の文書に書き出すことができます。以下のコードを参考にしてください。
Sub テキストボックスの文字列を別文書に書き出す()
Dim shp As Shape
Dim newDoc As Document
Set newDoc = Documents.Add
For Each shp In ActiveDocument.Shapes
If shp.Type = msoTextBox Then
newDoc.Content.InsertAfter shp.TextFrame.TextRange.Text & vbCrLf
End If
Next shp
End Sub
Q2: ヘッダーやフッター内のテキストボックスも対象にできますか?
はい、可能です。ヘッダーやフッター内のテキストボックスも「ActiveDocument.Shapes」ではなく、「ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Shapes」や「ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Shapes」を使用することで取得できます。
Q3: テキストボックスの文字列をExcelに転送することはできますか?
はい、可能です。取得した文字列をExcelのセルに転送することで、Excelにデータを転送することができます。以下のコードを参考にしてください。
Sub テキストボックスの文字列をExcelに転送()
Dim shp As Shape
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Sheets(1)
For Each shp In ActiveDocument.Shapes
If shp.Type = msoTextBox Then
xlSheet.Cells(1, 1).Value = shp.TextFrame.TextRange.Text
End If
Next shp
End Sub
まとめ
今回は、Word VBAを使って文書内のテキストボックスから文字列を取得する方法をご紹介しました。VBAを活用することで、手作業では難しい作業も効率的に行うことができます。ぜひ、今回の方法を試してみてください。
他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。



コメント