- 締切済み
VBAでexcelのグループ化された図形から子供図形のテキストを取り出すには?
質問タイトルのとおりですが、EXCEL図形において、グループを解除することなく、グループ化されたままで子供図形の中の文をVBAで取り出したり変更するのは不可能なのでしょうか? GroupItems→item1→drawingobject→textとたどって行きましたがアクセス出来ないプロパティのようです。
- Visual Basic
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- papayuka
- ベストアンサー率45% (1388/3066)
こちらでもExcel2003のマシンでやってみましたが、おっしゃる通りダメでした。 Excel97、Excel2000はOKのようで、仕様が変わったようですね。
- papayuka
- ベストアンサー率45% (1388/3066)
であればお役に立てません。 こちらでは問題なく動作しますので。 (但し、グループ化したシェイプ同士をグループ化した場合を除く) 【検証内容】 環境:Excel2000 1)適当なオートシェイプを作り、テキストの追加をしてから適当な文字を書く。 2)上記を何度か繰り返して複数のオートシェイプを作りグループ化。 3)マクロを実行
- papayuka
- ベストアンサー率45% (1388/3066)
> どうも私の環境では(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 知識のある方のようですし、再帰等についてはご自身でご検討下さい。
補足
すみませんでした。全くそのままでやって駄目だったので色々調べているうちにコードの形が変わって行ったんです。 上のコードもそのままでやってみましたが、最初何も出ないので、on errorを外してやってみたところ、次のところで「型が一致しません」というエラーになってしまいます。 Debug.Print sh.GroupItems(i).TextFrame.Characters.Text
- papayuka
- ベストアンサー率45% (1388/3066)
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
お礼
教えていただいた方法を検証してみましたが、どうも私の環境では(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
補足
charactersというのがあったのでっすか!気がつかなかった。それで行けるならこれをfunctionにして再帰コーディングすれば全部解けて行けるのではないでしょうか????
関連するQ&A
- エクセル2013図形のグループ化解除
エクセル2013で図形をグループ化して保存したものをグループ化解除して修正したいのですが、グループ化のボタンがクリックできない状況です。 グループ化したものは図形とテキストです。 解除方法があれば教えてください。
- ベストアンサー
- 在宅ワーク・SOHO
- 図形をグループ化すると「図」になってしまう
Excelで図形を使うとき、三角や資格の図形の中にテキストが入力できますが、いくつかの図形をグループ化したとき「図の形式」メニューが自動ででてきてしまいます。 つまり、図形が図になってしまうのです。 そのためか、テキスト入力どころか、グループ化の解除自体ができなくなります。 なぜ図になってしまうのか、解除の方法、テキスト入力の方法など、正しい方法を教えてください
- 締切済み
- 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のセルの結合をすること・書式(文字列、日付等)を変更することなのですが、これらのメソッドを利用できないとなると、ほかに方法が思いつきません。 もしご存知でしたらお教えいただければ幸いです。
- ベストアンサー
- Visual Basic
- Excel2007、図形追加したら印刷できない
Excel2007を使用しています。 PrintScreenでとった画像を貼付け、トリミングして、圧縮をかけた画像の上に、 オートシェイプ図形の矢印とテキストボックスを載せて、印刷をしたらプレビュー通りに印刷され、 その後、図形の円とテキストボックスを追加して上書き保存後、印刷すると、 画像だけが印刷され、図形(矢印と円とテキストボックス)が印刷されません。 プレビューには正しく表示されていて、 図形を「最前面へ移動」をクリックしても、 画像と図形をグループ化しても、 図形の「サイズとプロパティ/プロパティ/オブジェクトを印刷する」にチェックが入っていても、 ページ設定の「簡易印刷」にチェックがなくても、 印刷されません。 一度エクセルファイルを閉じて、また印刷かけても、図形は印刷されません。 どうしたらプレビュー通りに印刷されるようになりますか? 教えてください!!
- ベストアンサー
- オフィス系ソフト
- Excel2007 図形をグループ化で余白??
Excel2007で、挿入した図形(四角形)を配置して、グラデーションを設定してから コピーしてPowerPointに貼り付けて、図形で保存しています。 1つの図形なら良いのですが、2つ以上の図形をグループ化して PowerPointに貼り付けると余白ができています。 そのまま図形で保存すると同じように、余白があります。 Excel2000では余白はできないのですが、余白をなくす方法はないでしょうか?
- ベストアンサー
- オフィス系ソフト
- エクセル上で図のグループ化解除ができない
エクセル2003です。 丸や長方形、テキストボックスなど簡単な図形を いくつかグループ化したまではいいのですが、 解除できなくなりました。 どうしたら解除できますか? オートフィルタや関数などデータベース的なことはしていない、 ワードでも済むような、 単純なファイルです
- ベストアンサー
- オフィス系ソフト
- ■パワポ■ グループ化した図形&テキストの一括縮小・拡大の方法はありますか?
【パワーポイント2007】についての質問です。 資料作成で、ホームページなどの画面レイアウトイメージを作っております。 まず、大枠に四角い図形、その中に、いくつかテキスト文字欄を載せ、 罫線、その他図形、という具合で構成したレイアウト図を作り、最後にグループ化をしています。 このグループ化したレイアウト図のサイズを変更して利用したいケースが多々あります。 (違う資料に転用する時や、ページに詰め込む要素が多くなった時など) 例えば縮小する時、「配置とサイズ」から、"縦横比を固定する"を用い、縮小しているのですが、 グループ化したそれぞれの図形や罫線は小さくなるのですが、 テキスト文字のサイズは変わらないため、結果的にレイアウト図がくずれて困っています。 図形もテキスト文字も全て一括で、縮小・拡大できる方法はありませんでしょうか? ご存知の方いましたら、アドバイスいただけると幸いです。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
お礼
会社のexcel2000ではOKでした。 もう一台のexcel2002ではNGでした。
補足
微妙なところなのですね。私の自宅のPCはExcel2003です。会社のPCでやってみて報告します。