Office関連

テキストボックスの中にある表を操作するWordマクロ

Yahoo!知恵袋で、「Wordマクロでテキストボックスの中にある表の文字列を取得したい」との質問がありました。

コードとしては、下記のようなコードで対応できるかと思います。

Option Explicit

Public Sub Sample()
  With ActiveDocument.Shapes("Text Box 1") 'Shapeオブジェクト指定
    With .TextFrame.TextRange
      If .Tables.Count > 0 Then
        With .Tables(1) 'テキスト ボックスの中の表指定
          Debug.Print .Cell(1, 1).Range.Text '指定したセルの文字列取得
          With .Cell(2, 2).Shading '指定したセルの背景色設定
            .Texture = wdTextureNone
            .BackgroundPatternColor = wdColorYellow
          End With
        End With
      End If
    End With
  End With
End Sub

上記コードを実行すると、下図のようにテキストボックスの中にある表の、左上のセル(Cell(1, 1))の文字列をイミディエイト ウィンドウに出力し、真ん中のセル(Cell(2, 2))の背景を黄色で塗りつぶします。

WordVBA_Nested_Table_01

Wordマクロでよく引っ掛かるのが、こういった入れ子になっているオブジェクトの対応ですね。
構造が下記のように深くなっているので、普通に「ActiveDocument.Tables」と書いただけでは対応できません。

  • Shape
    • └TextFrame
      • └TextRange (Range)
        • └Tables
          • └Table (Tables.Item(n))

このように深い階層のオブジェクトを調べる場合には、下図のようにローカル ウィンドウが活用できるでしょう。

WordVBA_Nested_Table_02

ローカル ウィンドウの使い方は、Excel MVPである伊藤さんのブログ「インストラクターのネタ帳」に色々な記事がありますので、そちらをどうぞご参照ください。

WebDriverを使わずMicrosoft Edgeを制御するC#コード前のページ

セル内にあるブックマークをカウントするWordマクロ次のページ

関連記事

  1. Office関連

    VBE用のCOMアドインをメモ帳で作ってみる。

    “Officeアプリケーション用のCOMアドインをVisual Stu…

  2. Office関連

    類似した書式の文字列を選択するWordマクロ三種

    Wordには、選択中の文字列と似た書式の文字列を一括選択する「類似した…

  3. アイコン一覧

    Office 365アイコン(imageMso)一覧(M)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  4. Office関連

    Officeアプリケーションのバージョン情報ダイアログから情報を取得するVBScript

    自分の手間を減らすためのスクリプトシリーズ、今回はWordやExcel…

  5. Office関連

    各ページを画像に変換するWordマクロ

    Excel MVPの伊藤さんがブログで、WordのPageオブジェクト…

  6. Office関連

    Microsoft Graph SDK for PHPを使ったAPIの呼び出しサンプル

    知らない間に(恐らくBuild 2017のタイミングに合わせて)Mic…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP