- ベストアンサー
エクセルVBAでテキストボックスの値の取得と変更について
エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。 環境:WindowsXPでオフィス2002 状況: エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C) エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい 試した事: コントロールを配置したシートに次のマクロ TEXTBOX_C.Text = "これはコントロールのテキストボックス" を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。 また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エクセルを新規に開きました。 そのSheet1に(コントロールツールボックスの)TextBoxを貼りつけました。 そのBook1から、ファイル-開くで別ブックを開きました。 別ブックのMojule1側に下記を書いて Sub test02() MsgBox Workbooks("book1").Worksheets("sheet1").textbox1.Text End Sub を実行すると、Book1のTextBoxに入れた文字列が表示 されました。 がそんな質問ではないのですか。
その他の回答 (1)
- papayuka
- ベストアンサー率45% (1388/3066)
a.xlsの"Sheet1"にActiveXのTextBoxを置き、b.xlsの標準モジュールに下記を書いて、a.xls を開いた状態で試してます。(Excel2000) Sub Test() Dim ws As Worksheet, myObj As OLEObject Set ws = Workbooks("a.xls").Worksheets("Sheet1") For Each myObj In ws.OLEObjects If UCase(myObj.Name) Like "TEXTBOX*" Then MsgBox myObj.Object.Value End If Next myObj End Sub
お礼
ありがとうございました 単純なことで悩んでました
お礼
簡単に出来てしまいました。 ブック名とシート名を指定すれば良かっただけとは・・・ 数時間考えて出来なかったもので、助かりました