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

    「あのコマンドどこだっけ? for Office 2013」の紹介

    Word MVPの新田さんのブログでも紹介していただいている自作フリー…

  2. Office関連

    1MBのWordファイルって何文字くらい?

    ZIP圧縮されたOOXML形式のWordファイルって1MBだと何文字分…

  3. Office関連

    Microsoft Graph ExplorerがMicrosoft アカウント(MSA)に対応しま…

    Azure AD v2.0 エンドポイントによって、個人用Micros…

  4. Office関連

    「印刷の向き」の変更を検知するExcelマクロ

    MSDNフォーラムに「「印刷の向き」の「縦」「横」ボタンがクリックされ…

  5. Office関連

    「ちゃうちゃう!」で2つの文書を比較するWordマクロ

    2014/08/10 追記:ちゃうちゃう!がバージョンアップされま…

  6. Excel

    指定したセル範囲をUTF-8やEUC-JP等のテキストファイルとして出力するExcelマクロ

    ExcelファイルをUTF-8のテキストファイルで出力する必要があった…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP