• 締切済み

VBAでexcelのグループ化された図形から子供図形のテキストを取り出すには?

質問タイトルのとおりですが、EXCEL図形において、グループを解除することなく、グループ化されたままで子供図形の中の文をVBAで取り出したり変更するのは不可能なのでしょうか? GroupItems→item1→drawingobject→textとたどって行きましたがアクセス出来ないプロパティのようです。

noname#227089
noname#227089

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

こちらでもExcel2003のマシンでやってみましたが、おっしゃる通りダメでした。 Excel97、Excel2000はOKのようで、仕様が変わったようですね。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

であればお役に立てません。 こちらでは問題なく動作しますので。 (但し、グループ化したシェイプ同士をグループ化した場合を除く) 【検証内容】  環境:Excel2000  1)適当なオートシェイプを作り、テキストの追加をしてから適当な文字を書く。  2)上記を何度か繰り返して複数のオートシェイプを作りグループ化。  3)マクロを実行

noname#227089
質問者

お礼

会社のexcel2000ではOKでした。 もう一台のexcel2002ではNGでした。

noname#227089
質問者

補足

微妙なところなのですね。私の自宅のPCはExcel2003です。会社のPCでやってみて報告します。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

> どうも私の環境では(1)で型が違うと怒られてしまいます。 あの、、、 ここまで書き換えておいて「俺の環境じゃ動かねー」って言われても、、、(^^; 私のサンプルでも動きませんか? 普通のオートシェイプとテキスト枠を持つオートシェイプで処理を分ける必要があるようです。 この判定方法も良く解らなかったので、サンプルでは On Error Resume Next で逃げてます。 下記でセルコメントも拾ってきます。 Sub aaa() Dim sh As Shape  On Error Resume Next  For Each sh In ActiveSheet.Shapes   If sh.Type = msoGroup Then     For i = 1 To sh.GroupItems.Count       Debug.Print sh.GroupItems(i).TextFrame.Characters.Text     Next i   Else     Debug.Print sh.TextFrame.Characters.Text   End If  Next sh End Sub 知識のある方のようですし、再帰等についてはご自身でご検討下さい。

noname#227089
質問者

補足

すみませんでした。全くそのままでやって駄目だったので色々調べているうちにコードの形が変わって行ったんです。 上のコードもそのままでやってみましたが、最初何も出ないので、on errorを外してやってみたところ、次のところで「型が一致しません」というエラーになってしまいます。 Debug.Print sh.GroupItems(i).TextFrame.Characters.Text

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

Shape を単純にグループ化した物なら下記で取得出来ました。 ただ、グループ化した Shape 同士をグループ化したようなケースだと上手く取得出来ないようで、この回避法は解りません。 Sub Test() Dim sh As Shape  On Error Resume Next  For Each sh In ActiveSheet.Shapes   If sh.Type = msoGroup Then     For i = 1 To sh.GroupItems.Count       MsgBox sh.Name & " : " & _        sh.GroupItems(i).TextFrame.Characters.Text     Next i   End If  Next sh End Sub

noname#227089
質問者

お礼

教えていただいた方法を検証してみましたが、どうも私の環境では(1)で型が違うと怒られてしまいます。 Sub Test() Debug.Print vbNewLine & "------------------------" Dim sh As Shape For Each sh In ActiveSheet.Shapes If sh.Type = msoGroup Then For i = 1 To sh.GroupItems.Count Dim sh2 As Shape Set sh2 = sh.GroupItems(i) Debug.Print sh2.Name, "タイプ" & sh2.Type; txt = " 内容:" & sh2.TextFrame.Characters.Text<----(1) Debug.Print txt Next i Else Debug.Print sh.Name, "タイプ" & sh.Type; If sh.Type = msoAutoShape Then Debug.Print " 内容:" & sh.TextFrame.Characters.Text ElseIf sh.Type = msoTextBox Then Debug.Print " 内容:" & sh.TextFrame.Characters.Text Else Debug.Print " -" End If End If Next sh End Sub

noname#227089
質問者

補足

charactersというのがあったのでっすか!気がつかなかった。それで行けるならこれをfunctionにして再帰コーディングすれば全部解けて行けるのではないでしょうか????

関連するQ&A

  • エクセル2013図形のグループ化解除

    エクセル2013で図形をグループ化して保存したものをグループ化解除して修正したいのですが、グループ化のボタンがクリックできない状況です。 グループ化したものは図形とテキストです。 解除方法があれば教えてください。

  • 図形をグループ化すると「図」になってしまう

    Excelで図形を使うとき、三角や資格の図形の中にテキストが入力できますが、いくつかの図形をグループ化したとき「図の形式」メニューが自動ででてきてしまいます。 つまり、図形が図になってしまうのです。 そのためか、テキスト入力どころか、グループ化の解除自体ができなくなります。 なぜ図になってしまうのか、解除の方法、テキスト入力の方法など、正しい方法を教えてください

  • テキストボックスをグループ化するVBA

    エクセル上に並んだテキストボックスを、ボタンを押すことで、任意のテキストボックスをグループ化させたい。また、別のボタンでグループ化の解除が出来るようなVBAをおしえてください。 テキストボックスは、Sheet1~3まであって、ボタンもそれぞれに配置してあり、 どこのSheetのボタンを押しても、各シート、それぞれに任意の設定したテキストボックスがグループ化できるようにしたい ※各シート、グループ化するテキストボックスはおなじでなない・・・ よろしくお願いします。

  • エクセル VBA : テキストボックスのグループ化

    エクセル VBAにてテキストボックスをグループ化したいのです。 マクロを記録すると、 ActiveSheet.Shapes.Range(Array("Oval 82", "Text Box 83")).Select Selection.ShapeRange.Group.Select となります。 "Text Box 83"のように常に名前が固定されているわけではないので、セルのA1からC10にある図形を選択してグループ化するようにしたいのです。 ご存知の方、アドバイス願います。

  • エクセル2007でのグループされた図形のコピー方法

    excel2007でグループ化した図形を他のページにコピーしようとしたところ、コピーは出来ますがグループ解除された状態でコピーされます。切取りをして貼り付けても同じ結果です。ただしドラッグすると正常です。Ctrlキーを押しながらドラッグすると同じページには可能でしたが他のページにはコピーできません。グループ化した図形のコピーの方法を教えて下さい。なお以前は2003を使用していましたが何も問題はありませんでした。ちなみにソフトはXP Proを使用しています。会社の発表資料作成中ですので宜しくお願い致します。

  • VBAでAccessからExcelのセルフォーマットを変更するには?

    タイトルのとおり、VBAでAccess2003からExcel2003のセルフォーマットを変更しようとしていますが、Excel上のVBAで利用できるWorksheet-Range-Selectやその他いくつかのメソッドが、Accessからは利用できません(Accessでは"Microsoft Excel 11.0 Object Library"を参照しています) 実現したいのは、AccessからExcelのセルの結合をすること・書式(文字列、日付等)を変更することなのですが、これらのメソッドを利用できないとなると、ほかに方法が思いつきません。 もしご存知でしたらお教えいただければ幸いです。

  • Excel2007、図形追加したら印刷できない

    Excel2007を使用しています。 PrintScreenでとった画像を貼付け、トリミングして、圧縮をかけた画像の上に、 オートシェイプ図形の矢印とテキストボックスを載せて、印刷をしたらプレビュー通りに印刷され、 その後、図形の円とテキストボックスを追加して上書き保存後、印刷すると、 画像だけが印刷され、図形(矢印と円とテキストボックス)が印刷されません。 プレビューには正しく表示されていて、 図形を「最前面へ移動」をクリックしても、 画像と図形をグループ化しても、 図形の「サイズとプロパティ/プロパティ/オブジェクトを印刷する」にチェックが入っていても、 ページ設定の「簡易印刷」にチェックがなくても、 印刷されません。 一度エクセルファイルを閉じて、また印刷かけても、図形は印刷されません。 どうしたらプレビュー通りに印刷されるようになりますか? 教えてください!!

  • Excel2007 図形をグループ化で余白??

    Excel2007で、挿入した図形(四角形)を配置して、グラデーションを設定してから コピーしてPowerPointに貼り付けて、図形で保存しています。 1つの図形なら良いのですが、2つ以上の図形をグループ化して PowerPointに貼り付けると余白ができています。 そのまま図形で保存すると同じように、余白があります。 Excel2000では余白はできないのですが、余白をなくす方法はないでしょうか?

  • エクセル上で図のグループ化解除ができない

    エクセル2003です。 丸や長方形、テキストボックスなど簡単な図形を いくつかグループ化したまではいいのですが、 解除できなくなりました。 どうしたら解除できますか? オートフィルタや関数などデータベース的なことはしていない、 ワードでも済むような、 単純なファイルです

  • ■パワポ■ グループ化した図形&テキストの一括縮小・拡大の方法はありますか?

    【パワーポイント2007】についての質問です。 資料作成で、ホームページなどの画面レイアウトイメージを作っております。 まず、大枠に四角い図形、その中に、いくつかテキスト文字欄を載せ、 罫線、その他図形、という具合で構成したレイアウト図を作り、最後にグループ化をしています。 このグループ化したレイアウト図のサイズを変更して利用したいケースが多々あります。 (違う資料に転用する時や、ページに詰め込む要素が多くなった時など) 例えば縮小する時、「配置とサイズ」から、"縦横比を固定する"を用い、縮小しているのですが、 グループ化したそれぞれの図形や罫線は小さくなるのですが、 テキスト文字のサイズは変わらないため、結果的にレイアウト図がくずれて困っています。 図形もテキスト文字も全て一括で、縮小・拡大できる方法はありませんでしょうか? ご存知の方いましたら、アドバイスいただけると幸いです。 よろしくお願いします。

専門家に質問してみよう