当サイトの記事にはプロモーションが含まれています。

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`を使ってセル内のテキストを取得することができます。

まとめ

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

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

相談窓口(問い合わせ/LINE等)を設け、記事で解決しないケースも個別にサポートしていますので「パソコンが急に動かなくなった」「スマホの設定がわからない」などの悩みは一人で抱え込まず、お気軽にご相談ください。

【お問い合わせは下記URLから】
https://m32006400n.xsrv.jp/inquiry-form/

【公式LINEは下記URLから】
https://lin.ee/t8TDjcj

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

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