【Word2007】Shape内のInlineShape情報の取得方法

このQ&Aのポイント
  • Word2007を使用して、テキストボックス内に配置されたInlineShapeの情報を取得する方法について教えてください。
  • Shapeの情報は取得できるが、Shape内のInlineShapeの情報を取得する方法がわかりません。
  • 図に載せたコマンドボタンの情報を取得したいので、教えていただけると助かります。
回答を見る
  • ベストアンサー

【Word2007】Shapeの中のInlineShapeの情報を取得したい

いつもお世話になっております。 (図がなくて説明が悪かったと思いますので、訂正しました。) Word2007を使用しています。 [挿入]⇒[図形]から「テキストボックス」を入力できると思います。 その中に、[開発]⇒[コントロール]などから InlineShapeを配置できると思います。 そこで質問なのですが、 テキストボックス内のInlineShapeの情報を取得するには どのようにしたら良いでしょうか? Shapeの情報であれば以下のように取得できると思います。 Dim shape As Word.shape For Each shape In ActiveDocument.Shapes '必要に応じてプロパティの値を変えます。 MsgBox (shape.Width) Next 同じようにInlineShapeの情報であれば、 以下のように取得できると思います。 Dim ishape As Word.InlineShape For Each ishape In ActiveDocument.InlineShapes '必要に応じてプロパティの値を変えます。 MsgBox (shape.Width) Next ここまでは分かったのですが、 Shape内に配置されているInlineShapeの情報を取得する方法が どうしても分かりませんでした。 もしご存知でしたら、教えて頂けませんか? ぜひよろしくお願い致します。 ※図を付けます。  図に載せたコマンドボタンの情報を取得したいと思っております。  よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

下記のようなことでどうでしょうか。 Dim ishp As Word.InlineShape ActiveDocument.Shapes("Text Box 1").Select For Each ishp In Selection.Range.InlineShapes   MsgBox (ishp.Width) Next

rock123
質問者

お礼

ありがとうございます。 ただ選択はせずに取得したいのです。 選択さえすれば取得できるというは私も分かったのですが、 選択しないとなると、なかなか難しそうでした。 ご回答ありがとうございました。

rock123
質問者

補足

ありがとうございました。 (補足にお礼を書いてすいません。) 全部選んでいけば、取得できそうですね。 xls88様はこれを言いたかったのでしょうか。 (下にプログラムを載せます。) とても参考になりました。 あとは、始めに選んでいた場所を選びなおせれば、 解決できそうです。 この方法が簡単には分かっていませんが。。。 また質問させて頂くかもしれませんが、 そのときには、ぜひよろしくお願い致します。 Sub main() Dim shape As Word.shape Dim ishp As Word.InlineShape For Each sh In ActiveDocument.Shapes sh.Select For Each ishp In Selection.Range.InlineShapes MsgBox (ishp.Width) Next Next End Sub

関連するQ&A

  • 【Word2007】はじめに選んでいた場所を選びなおしたい

    Word2007を使用しています。 以前以下の質問をしました。 http://oshiete1.goo.ne.jp/qa4854648.html そこでInlineShapeの情報を取得するための 特殊な方法を教えて頂きました。 ただしこの方法を使用すると 選択されている場所が変更されてしまうため、 この処理をしたあとに、 選択箇所を元に戻したいと思っています。 今行っている処理は以下の通りです。 Sub main() Dim shape As Word.shape Dim ishp As Word.InlineShape For Each sh In ActiveDocument.Shapes sh.Select For Each ishp In Selection.Range.InlineShapes MsgBox (ishp.Width) Next Next End Sub このプログラムの前後で、 現在の選択箇所を取得し、そこに選択を戻せば良いのだろう ということは分かるのですが、その方法が分かりません。 もしよろしければ、教えて頂けませんか? ぜひよろしくお願い致します。

  • Word VBA 表内の図を一括中央揃えにするマク

    Wordの表に3,000個ほどの図を入れ、それぞれコメントを入れておりますが、図の位置が左揃えになったり、中央揃えになったり、右揃えになったりしています。これら図だけを一括して中央揃えにするマクロを作ろうとしています。 図のサイズを一括して変更するマクロは資料を参考にして出来ましたが、中央揃えにするマクロがどうしても出来ません。 参考にして作ったプログラムは以下の通りですが、コンパイルエラーになってしまいます。 四苦八苦しています。どなたかご指導お願いします。 Sub 図の一括中央揃え() ' ' 図の一括中央揃え ' ' Dim shp As InlineShape For Each shp In ActiveDocument.InlineShapes shp.ParagraphFormat.Alignment = wdAlignParagraphCenter Next End Sub

  • ワード上Shapeの位置情報を統一基準で取得したい

    ワードVBAを書いています。 お客さんのワード文書にShapeが貼り付いていて、その位置情報を、ページの境界線からの距離(ポイント)で取得したいと思っています。 shape.RelativeHorizontalPositionは、wdRelativeHorizontalPositionColumn となっていました。 これはどういう意味なんでしょうか? 色々調べたのですが、なかなかいい情報が見つかりません。 shape.Left/Topを、何の座標と足せば、見た目の座標になるのでしょうか? 詳しい方がおられたら教えてください。

  • エクセルVBAでオートシェープを識別して削除したいのです・・・

    エクセルシートにたくさん貼り付けた画像を一度に削除するため、下記のようなマクロを作成しました。 しかし、これでは「テキストボックス」や「→」のようなオートシェープも全部消えてしまいます。 画像データ(図)だけを認識して消すにはどうすればよいのでしょうか? Sub sakujo() Dim Myshape As Shape For Each Myshape In ActiveSheet.Shapes If Myshape.Type <> msoFormControl Then Myshape.Delete End If Next End Sub

  • ShapeのVBAの中での取り扱い

    ShapeのVBAの中での取り扱いに関して、サジェスチョン願います。 Shapeに文字が書き込まれていない段階で、選択して文字を読み込み判定しようとするとエラーとなります。 下記のVBAでは、5番目のShapeが該当します。 このエラーを防ぐためには、On Error Resume Nextが有効ですが、他の方法を探しています。例えば、charactor=trueみたいなもの。 ----- Sub Shapeの調査() Dim nametemp(10) As String Dim temp As Integer Dim i As Integer Dim aaa As Variant 'On Error Resume Next ActiveSheet.Shapes.AddShape(msoShapeRectangle, 50, 50, 50, 50).Select ActiveSheet.Shapes.AddShape(msoShapeOval, 100, 100, 50, 50).Select ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 150, 150, 50, 50).Select ActiveSheet.Shapes.AddShape(msoShapeRectangle, 200, 200, 50, 50).Select ActiveSheet.Shapes.AddShape(msoShapeOval, 250, 250, 50, 50).Select temp = ActiveSheet.Shapes.Count For i = 1 To temp ActiveSheet.Shapes(i).Select nametemp(i) = ActiveSheet.Shapes(i).Name Next For i = 1 To temp / 2 + 1 '4つのshapeに対し、文字を書き込もうとする ActiveSheet.Shapes(nametemp(i)).Select Selection.Characters.Text = "" Next For i = 1 To temp / 2 '3つに対して、文字を書き込む ActiveSheet.Shapes(nametemp(i)).Select Selection.Characters.Text = "zzzzz" Next For i = 1 To temp ActiveSheet.Shapes(nametemp(i)).Select aaa = Selection.Characters.Text '<--5番目のShapeに対し If aaa = "zzzzz" Then MsgBox (aaa)'<--errorとなる。 Next End Sub

  • word VBA 文字列操作について

    WORD2007にて、文書内にいくつかの描画キャンバスがあり、この中にいくつかのオートシェイプがあります。(グループ化されたものも含む) マクロにてこのオートシェイプ内の文字列をすべて特定のフォントに変更したいのですが、どなたかCODEを教えて頂けないでしょうか? On Error Resume Next Dim shp As Shape For Each shp In ActiveDocument.Content.ShapeRange shp.Select Selection.Font.Name = "RFPイワタ中太教科書体" Selection.Font.NameAscii = "RFPイワタ中太教科書体" Next shp というものも他のサイトで見つけたのですが、おそらくオートシェイプが描画キャンバス内にあるためにSelectされないのだと思われます よろしくお願いします

  • エクセルVBA/シェープの文字列を取得

    エクセル2010です。 BOOK内の各シートにボタンやチェックボックス、ラベルやテキストボックスなどが配置されています。 これらの貼り付けられたものの一覧を作りたいのです。 Sub obj_Check() Dim st Dim sp Dim i As Long For Each st In Sheets For Each sp In st.Shapes i = i + 1 With Sheets("Sheet3") .Cells(i, "A").Value = sp.Name ' .Cells(i, "B").Value = sp.Caption ’これがエラー .Cells(i, "C").Value = st.Name End With Next sp Next st End Sub とやってみましたがsp.Captionがエラーになります。 .Cells(i, "B").Value = sp.Shapes.Range.Character.Text としても同じです。 どうやったら、シェープに書かれた文字列が取得できるのでしょうか?

  • オートシェイプの名前の取得

    エクセル2000を使用してます オートシェイプをクリックしたときはわかるのですが・・・ Sub オートシェイプ14_Click() Dim objShape As Shape Dim ShapeName As String Set objShape = ActiveSheet.Shapes(Application.Caller) ShapeName = objShape.Name End Sub 新規でオートシェイプ作成されたとき、その名前を取得するにはどうしたらいいのでしょう。 作成された順番にセルに表示したいのです

  • アウトラインに表示されている文字 取得したいのです

    アウトラインに表示されている文字(タイトル?)のみ取得したいのですが、 Dim sld As Slide Dim shp As Shape Sub test() For Each sld In ActivePresentation.Slides sld.Select For Each shp In ActiveWindow.Selection.SlideRange.Shapes Debug.Print shp.TextEffect.Text Next shp Next sld End Sub を実行すると、アウトラインだけではなく、 テキストボックスにあるすべての値まで取得してしまいます。 アウトラインのタイトル部分のみ表示される文字を取得するコードはありますか? 「クリックしてタイトルを入力」 「・クリックしてテキストを入力」 とスライドにデフォルトで表示されますが、 「クリックしてタイトルを入力」のみの値を取得したいです。

  • ☆WORD[図の書式設定]のリセット方法

    WORDにコピー張付けした画像(例えばインストール画面を次々コピー張付け)を、適当なサイズに変更したが元のサイズに戻したい。 手作業ではなくVBAマクロで一括返還したい…幸いにも同課題のExcel編は 「QNo.5660996」回答者:watabe007さんが解決してくれています。 WORDも適用しようと頑張ったのですがソースコードが異なる模様、 悔しいが私には難しくて解決できませんでした。 手動なら画像をマウス右クリックして、 [サイズとプロパティ]⇒[サイズ]⇒[原型のサイズ]⇒[リセット]の手順ですが、 VBAマクロで実行するにはどの様な記述をすればよいか教えて下さい。 宜しくお願いします。 参考 一括で50%に縮小するソースコードは次の記述で成功しています。 私が正しいと思っているだけかも知れません。 '---------------------------------------------- Option Explicit Sub 縮小50() Dim s For Each s In ActiveDocument.Shapes s.Width = s.Width * 0.5 s.Height = s.Height * 0.5 Next For Each s In ActiveDocument.InlineShapes s.Width = s.Width * 0.5 s.Height = s.Height * 0.5 Next End Sub '---------------------------------------------- 以上

専門家に質問してみよう