Word VBAで表のセルから値を取得する方法|初心者でもわかる解説

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

Wordで作成した文書に表があると、データの整理や編集がしやすくなりますよね。そんな表の中から、特定のセルの値を自動で取得したいとき、VBA(Visual Basic for Applications)を使うととても便利です。今回は、初心者の方でもわかりやすいように、Word VBAで表のセルから値を取得する方法を、実際のコード例とともに解説します。

スポンサーリンク

Word VBAで表のセルから値を取得する基本の方法

Wordのイメージ

Wordのイメージ

まずは、Word VBAを使って、表の特定のセルから値を取得する基本的な方法を紹介します。

表の特定のセルを指定して値を取得する

Word文書内の表は、`Tables`コレクションで管理されています。例えば、文書内の1番目の表の2行目、3列目のセルの値を取得するには、以下のようなコードを使います。

Sub GetCellValue()
    Dim cellValue As String
    cellValue = ActiveDocument.Tables(1).Cell(2, 3).Range.Text
    ' セルの末尾には不要な改行コードが含まれているため、取り除きます
    cellValue = Left(cellValue, Len(cellValue) - 2)
    MsgBox "取得した値: " & cellValue
End Sub

このコードでは、`ActiveDocument.Tables(1)`で1番目の表を指定し、`.Cell(2, 3)`で2行目、3列目のセルを指定しています。`Range.Text`でセル内のテキストを取得し、`Left(cellValue, Len(cellValue) – 2)`で末尾の改行コードを取り除いています。

表のすべてのセルから値を取得する

文書内の表のすべてのセルから値を取得したい場合は、`For Each`ループを使って、各セルを順番に処理します。

Sub GetAllCellValues()
    Dim tbl As Table
    Dim cel As Cell
    Dim cellValue As String
    ' 文書内のすべての表を処理します
    For Each tbl In ActiveDocument.Tables
        ' 各表のすべてのセルを処理します
        For Each cel In tbl.Range.Cells
            cellValue = cel.Range.Text
            ' セルの末尾には不要な改行コードが含まれているため、取り除きます
            cellValue = Left(cellValue, Len(cellValue) - 2)
            Debug.Print cellValue
        Next cel
    Next tbl
End Sub

このコードでは、`For Each tbl In ActiveDocument.Tables`で文書内のすべての表を処理し、`For Each cel In tbl.Range.Cells`で各表のすべてのセルを処理しています。`Debug.Print`で取得した値をイミディエイトウィンドウに出力しています。

表の中の表(ネストされた表)のセルから値を取得する

Wordでは、表の中にさらに表を含むことができます。これを「ネストされた表」と呼びます。ネストされた表のセルから値を取得するには、外側の表と内側の表をそれぞれ処理する必要があります。

Sub GetNestedTableValues()
    Dim outerTbl As Table
    Dim innerTbl As Table
    Dim cel As Cell
    Dim cellValue As String
    ' 文書内のすべての表を処理します
    For Each outerTbl In ActiveDocument.Tables
        ' 外側の表内のすべての内側の表を処理します
        For Each innerTbl In outerTbl.Tables
            ' 内側の表のすべてのセルを処理します
            For Each cel In innerTbl.Range.Cells
                cellValue = cel.Range.Text
                ' セルの末尾には不要な改行コードが含まれているため、取り除きます
                cellValue = Left(cellValue, Len(cellValue) - 2)
                Debug.Print cellValue
            Next cel
        Next innerTbl
    Next outerTbl
End Sub

このコードでは、`For Each outerTbl In ActiveDocument.Tables`で文書内のすべての外側の表を処理し、`For Each innerTbl In outerTbl.Tables`で各外側の表内のすべての内側の表を処理しています。`For Each cel In innerTbl.Range.Cells`で内側の表のすべてのセルを処理し、`Debug.Print`で取得した値をイミディエイトウィンドウに出力しています。

よくある質問や疑問

Q1: セルの値を取得する際に、末尾の改行コードを取り除く理由は何ですか?

Wordの表のセルには、セル内のテキストの末尾に改行コード(`Chr(7)`)が含まれています。これを取り除かないと、取得した値の末尾に不要な改行が含まれてしまいます。`Left(cellValue, Len(cellValue) – 2)`を使って、末尾の改行コードを取り除いています。

Q2: 表のセルの値を取得した後、どのように活用できますか?

取得したセルの値は、メッセージボックスで表示したり、Excelに転記したり、別のWord文書に挿入したりすることができます。例えば、Excelに転記する場合は、`Range.Value`を使ってセルの値を設定することができます。

Q3: 表のセルの値を取得する際に、セルが結合されている場合はどうすればよいですか?

セルが結合されている場合、`Range.Cells`を使ってセルを取得すると、結合されたセルが1つのセルとして扱われます。結合されたセルの値を取得するには、`Range.Text`を使ってセル内のテキストを取得することができます。

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

LINE公式

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

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

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

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

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

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

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

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

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

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

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

相談しに行く

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

まとめ

Word VBAを使うと、文書内の表のセルから簡単に値を取得することができます。初心者の方でも、上記のコード例を参考にして、実際に試してみてください。もし、コードの使い方や応用方法について疑問やお悩みがあれば、お気軽にLINEからお声掛けください。

コメント

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