初めて自分の家と他人の家が違う、と意識した時

VB6.0 SP5 WIN2000 で開発しています。
エクセルのシートに複数のテキストボックスがあります。
そのテキストボックスの名称や数は解らない前提で
そのテキストボックスの名称(”テキスト 1”などの)を
すべてVBから取得したいのですが、
解る方がいましたら教えてほしいのですが
よろしくお願いします。

A 回答 (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 にて動作確認
    • good
    • 1
この回答へのお礼

動作しました。助かりました。
いろいろ調べてはいたのですが、なかなか必要とする情報が
なくて半分あきらめて別の方法を考えようかと思っていた所でした。
名称さえ取得できればあとはOKです。
図形描画などの判断はTTakさんの「名前付けに定義を・・・」を参考にさせていただきます。
いや~本当にありがとうございました。

お礼日時:2004/07/15 13:35

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A