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

    Visio Onlineで図の作成・編集ができるようになりました。

    しばらくVisio Onlineを使っていなかったので気が付かなかった…

  2. Office アドイン

    [Office用アプリ]TechEd North America 2013のセッション資料

    アメリカ・ニューオリンズで現地時間6月3日から6日にかけて開催された開…

  3. Office アドイン

    Office アドインの概要と開発方法を学ぶための自習書

    2018年10月27日(土)、品川の日本マイクロソフト本社で「2018…

  4. Office関連

    Office 365 APIをVBAから呼び出す(3)

    前々回の記事でOffice 365とAzure ADの紐づけを、前回の…

  5. Office関連

    [Excel Services ECMAScript]選択範囲が変更されたときのイベントを利用する。…

    埋め込んだExcelワークブックの、選択範囲が変更されたときのイベント…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP