• ベストアンサー

エクセルVBAでテキストボックスの値の取得と変更について

エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。 環境:WindowsXPでオフィス2002 状況: エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C) エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい 試した事: コントロールを配置したシートに次のマクロ TEXTBOX_C.Text = "これはコントロールのテキストボックス" を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。 また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

エクセルを新規に開きました。 そのSheet1に(コントロールツールボックスの)TextBoxを貼りつけました。 そのBook1から、ファイル-開くで別ブックを開きました。 別ブックのMojule1側に下記を書いて Sub test02() MsgBox Workbooks("book1").Worksheets("sheet1").textbox1.Text End Sub を実行すると、Book1のTextBoxに入れた文字列が表示 されました。 がそんな質問ではないのですか。

minarai31
質問者

お礼

簡単に出来てしまいました。 ブック名とシート名を指定すれば良かっただけとは・・・ 数時間考えて出来なかったもので、助かりました

その他の回答 (1)

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

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

minarai31
質問者

お礼

ありがとうございました 単純なことで悩んでました

関連するQ&A