アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのマクロについて教えてください。

今、オートシェイプで四角が描いてあり、その中にテキストで他のエクセルブックへのパスが記入してあります。
この状態から、オートシェイプ内のパスのブックを開き、開いたブックに何らかの処理をして、開いたブックを閉じるという処理をしたいと考えております。
処理を始めるトリガーは、他のオートシェイプをクリックするなどを考えております。

いろいろ試してみたのですが、オートシェイプ内に記述してあるテキストを抽出する方法が思いつきませんでした。(ここで使われているのはテキストボックスではなく、四角のオートシェイプです。)

お詳しい方、どのようにすればよいか教えてください。
よろしくお願いいたします。

A 回答 (3件)

Shape オブジェクトの TextFrame.Characters.Text を参照するとオートシェイプ内に記述してあるテキストが得られます。



Sub メモ1_Click()
MsgBox Sheet1.Shapes(1).TextFrame.Characters.Text
End Sub

Shape.TextFrame Property
http://msdn.microsoft.com/en-us/library/bb215095 …
TextFrame Object
http://msdn.microsoft.com/en-us/library/bb210284 …
TextFrame.Characters Method
http://msdn.microsoft.com/en-us/library/bb242015 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ご教授いただいた方法を使いまして、無事希望通りに動作させることができました。

お礼日時:2011/08/04 22:10

逆の発想で、どこかのセルにそのパスを入力。

(Ex.A1セル)

オートシェイプを作成し、そのオートシェイプを選択した状態で「数式バー」に「=A1」と入力。

これで、オートシェイプにセルの内容が表示されます。

後々処理があるのなら、セルにパスが入っている方が扱いやすいのではと思うのですが如何でしょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
今回はすでにオートシェイプにパスが入力されているところからなので、ご教授いただきました方法は使用できませんが、セルにパスが入力されている方が便利なのは確かです。
今後の参考とさせていただきます。

お礼日時:2011/08/04 22:13

取りあえずMsgBoxで表示をしてみます。



Sub Macro1()
ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
End Sub

でどうでしょう?
複数のオートシェイプがあっても、同じマクロでいけるはず。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
こちらの方法でうまく動かすことができました。

お礼日時:2011/08/04 22:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!