【VBA】Wordのテーブル内の値を取得して、Excel内で検索する方法|InStr関数で検索位置を特定する

目次

経緯

Wordには、Excelのように「A1」や「F6」といったセルアドレスの概念がありません。
そのため、Wordのテーブル内の特定位置にあるデータを取り出し、それをExcelの中で検索する方法を調べてみました。

結果として、Wordのテーブルの位置を (行,列) で指定し、取得した値を InStr() 関数でExcel内のデータと照合することで、目的を達成できました。


今回やりたいこと

  • Wordのテーブル(2,2) にある値を取得
  • その値がExcelの1行目・A列〜Z列のどこかに含まれているかを調べる
  • 含まれているセルのアドレスをメッセージボックスで表示する

使用するVBAコード(Word側)

以下が実際に使用したコードです。Wordのマクロとして実行します。

Sub SearchExcelFromWord()

    Dim xlApp As Object
    Dim xlBook As Object
    Dim xlSheet As Object
    Dim folderPath As String
    Dim fileName As String
    Dim searchValue As String
    Dim cell As Object
    Dim found As Boolean
    Dim doc As Document
    Dim tbl As Table
    Dim col As Integer

    Set doc = ActiveDocument
    Set tbl = doc.Tables(1)

    ' (2,2)のセルのテキストを取得し、改行や末尾文字を除去
    searchValue = tbl.Cell(2, 2).Range.Text
    searchValue = Replace(searchValue, vbCr, "")
    searchValue = Left(searchValue, Len(searchValue) - 1)

    Set xlApp = CreateObject("Excel.Application")
    folderPath = "C:\Users\mori\デスクトップ\"
    fileName = Dir(folderPath & "*.xlsx")

    If fileName = "" Then
        MsgBox "フォルダ内にExcelファイルが見つかりませんでした。"
        Exit Sub
    End If

    Set xlBook = xlApp.Workbooks.Open(folderPath & fileName)
    Set xlSheet = xlBook.Sheets(1)

    found = False

    For col = 1 To 26
        If InStr(1, xlSheet.Cells(1, col).Value, searchValue) > 0 Then
            MsgBox "Found at " & xlSheet.Cells(1, col).Address(0, 0)
            found = True
            Exit For
        End If
    Next col

    If Not found Then
        MsgBox "Value not found"
    End If

    xlBook.Close SaveChanges:=False
    xlApp.Quit

    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
    Set tbl = Nothing
    Set doc = Nothing

End Sub

補足:このコードのポイント

  • tbl.Cell(2,2).Range.Text でWordのテーブルからセル値を取得します
  • InStr() 関数を使い、Excel側のセル値に対して「部分一致」で検索を行っています
  • 値の末尾に付く改行や制御文字を削除しておかないと、比較が失敗します

応用可能なシーン

  • WordにあるデータとExcelマスタを突き合わせて存在チェックをしたいとき
  • Wordに入力されたIDやコードを使って関連データを抽出したいとき
  • Wordをフロント、Excelをデータベースのように使いたいとき

まとめ

Wordのテーブルの値を取得し、Excel内で検索するには、座標指定(Cell(row, col))+ 文字列操作 + InStr()関数が有効です。
このようにVBAを組み合わせることで、異なるOfficeアプリ間の連携が可能となります。

実務でも十分に活用できる内容ですので、ぜひ試してみてください。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次