Word VBAでテキストボックスの文字列を取得する方法

パソコンパソコン・スマホ教室
スポンサーリンク

Wordの文書内にあるテキストボックスから文字列を取得したいと思ったことはありませんか?特に、手作業でコピー&ペーストを繰り返すのは面倒ですよね。そんなときに便利なのが、VBA(Visual Basic for Applications)を使った自動化です。今回は、初心者の方でもわかりやすいように、VBAを使ってWordのテキストボックスから文字列を取得する方法をご紹介します。

スポンサーリンク

VBAとは?

Wordのイメージ

Wordのイメージ

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

今すぐ解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

今回は、Word VBAを使って文書内のテキストボックスから文字列を取得する方法をご紹介しました。VBAを活用することで、手作業では難しい作業も効率的に行うことができます。ぜひ、今回の方法を試してみてください。

他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。

コメント

タイトルとURLをコピーしました