- ベストアンサー
VBからエクセルのテキストボックスの名称を取得したい
VB6.0 SP5 WIN2000 で開発しています。 エクセルのシートに複数のテキストボックスがあります。 そのテキストボックスの名称や数は解らない前提で そのテキストボックスの名称(”テキスト 1”などの)を すべてVBから取得したいのですが、 解る方がいましたら教えてほしいのですが よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
フォームにコマンドボタン(Command1)を配置し、そのボタンを押したら、"C:\My Documents\book1.xls"の"Sheet1"にあるShapesオブジェクトのNameをすべて返すコードの例を考えてみました。 なお、この例ではコントロールツールボックスのテキストボックスの名前も図形描画のテキストボックスの名前も返してきます。 確認しましたが、図形描画のテキストボックス名はデフォルトの場合、シート上の名前ボックスでの表示が"テキスト 1"などとなっていても、返ってくる値が"Text Box 1"となりました。 コントロールツールボックスのテキストボックスは"TextBox1"と返してきます。 名前を指定するとその名前で返ってきますので、名前付けに定義を設けるか、デフォルトの場合はスペースの位置などで判別可能と思われますがいかがでしょう。 Option Explicit Dim wkbObj As WorkBook Private Sub Form_Load() Set wkbObj = GetObject _ ("C:\My Documents\book1.xls") End Sub Private Sub Command1_Click() Dim myShape As Excel.Shape With wkbObj.Sheets(1) For Each myShape In .Shapes MsgBox myShape.Name Next End With End Sub Private Sub Form_Unload(Cancel As Integer) Set wkbObj = Nothing End Sub なお、参照設定で、Microsoft Excel X Object Library への参照を設定する必要があります。Xの所にはバージョンの数値が入ります。 VB6.0 Excel2000 Win2000 にて動作確認
お礼
動作しました。助かりました。 いろいろ調べてはいたのですが、なかなか必要とする情報が なくて半分あきらめて別の方法を考えようかと思っていた所でした。 名称さえ取得できればあとはOKです。 図形描画などの判断はTTakさんの「名前付けに定義を・・・」を参考にさせていただきます。 いや~本当にありがとうございました。