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関連

    PowerPoint 2013ではプレゼンテーションをmp4形式で保存できるようになりました。

    ※ この情報はOffice 2013 カスタマー プレビュー版を元にし…

  2. Office関連

    「最速攻略 Wordマクロ/VBA徹底入門」レビュー

    いつもお世話になっているExcel MVPの伊藤さんに9月20日発売予…

  3. Office関連

    [Office 2013]サインインを無効にする。(2)

    前回の記事では「SignInOptions」の値を変更してサインインを…

  4. Office関連

    「VBA質問箱」にアクセスできない。

    2013/03/19 追記:ドメインが更新されVBA質問箱が閲覧で…

  5. Office関連

    CDOを使ってGmail送信を行うVBAマクロ

    「VBA Gmail 送信」といったキーワード検索で、「Gmail A…

  6. Office関連

    ドラッグ&ドロップでExcelのアドインを登録するVBScript

    「ドラッグ&ドロップでWordのテンプレートを登録・解除する(VBS)…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP