【ExcelVBA】Wordのファイル内に表がいくつかあるか特定するには

この記事では、Wordのファイル内に表がいくつかあるか特定する方法についてご説明します。

【動画】Excelのシートの表をそのままWordに出力して保存する実際の動き

本題に入る前に、まずは次の動画をご覧ください。


ExcelのマクロがWordのファイルを開き、Excelの表の値を出力したい(Wordの)表を検索して表の数を取得します。

マクロ作成の流れ

STEP.1
ExcelのマクロがWordのファイルを開き、Excelの表の値を出力したい(Wordの)表を検索する
ExcelのマクロがWordのファイルを開き、Excelの表の値を出力したい(Wordの)表を検索します。
STEP.2
表を検索して何件あったかを返す
表を検索して何件あったかを返します。

Wordファイルの例

今回は次のWordファイルを用意しました。

Wordファイルの中に6つの表があります。

マクロを実行すると、Wordのファイル内に表がいくつかあるか、その件数を表示します。

Wordファイルに表が6つあるので、6の値が出力されています。

コードの例

Option Explicit

Private Sub btn_exec_Click()
        
    Dim ws          As Worksheet    'ワークシート変数
    Dim WordApp     As Object       'Wordアプリケーションインスタンス用変数
    Dim WordDoc     As Object       'Wordファイル用変数
    
    'Wordの表から検索する文字列を取得する
    Const wdFndStr  As String = "項番"
    
    'Wordにデータを出力するシートを取得する
    Set ws = Worksheets("top")
    
    'Wordアプリケーション用インスタンスを生成する
    Set WordApp = CreateObject("Word.Application")
    
    'Wordを表示しない
    WordApp.Visible = False
    
    'Wordファイルを開く
    Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\0291.docx")
    
    'Wordファイル内の表の数を表示する
    MsgBox WordDoc.Tables.Count & "件"
    
    'Wordのファイルを閉じる
    WordDoc.Close
    
    'Wordを終了する
    WordApp.Quit

    '後処理
    Set WordDoc = Nothing
    Set WordApp = Nothing
        
End Sub

注目すべきコード①

最初に見て頂きたいのは16行目です。

    'Wordアプリケーション用インスタンスを生成する
    Set WordApp = CreateObject("Word.Application")

コードの説明

以上のコードは、Wordアプリケーション用インスタンスを生成するコードです。

このインスタンスを生成することでWordが起動されて操作することができるようになります。

今回はWordファイルを開いたりWord自体を終了させるなどの操作を行うのに使います。

注目すべきコード②

次に見て頂きたいのは19行目です。

    'Wordを表示しない
    WordApp.Visible = False

コードの説明

以上のコードは、Wordの画面を非表示にするコードです。

Trueの場合はWordが表示されたままの状態になります。

注目すべきコード③

次に見て頂きたいのは22行目です。

    'Wordファイルを開く
    Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\0291.docx")

コードの説明

以上のコードは、Wordファイルを開く処理のコードです。

OpenメソッドにExcelのシートの表を出力したいWordファイルのフルパスを指定して実行することで、そのWordファイルが開きます。

注目すべきコード④

次に見て頂きたいのは25行目です。

    'Wordファイル内の表の数を表示する
    MsgBox WordDoc.Tables.Count & "件"

コードの説明

以上のコードは、Wordファイル内の表の数を表示する処理のコードです。

WordDoc.Tables.CountプロパティはWord文書内の表の数を返すので、その値をメッセージボックスで表示させています。

注目すべきコード⑤

次に見て頂きたいのは28行目から31行目です。

    'Wordのファイルを閉じる
    WordDoc.Close
    
    'Wordを終了する
    WordApp.Quit

以上のコードは、Wordのファイルを閉じ、Word自体も閉じる(終了する)処理のコードです。

コードの詳細

28行目のコードは、Wordのファイルを閉じるコードです。

31行目のコードは、Wordを終了する(閉じる)コードです。

動作確認

Wordファイルの例」をご覧ください。

最後に

この記事では、Wordのファイル内に表がいくつかあるか特定する方法についてご説明しました。

Wordのファイル内に表がいくつかあるか知りたい場合は本記事を参考にして頂けたら幸いです。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら