• ベストアンサー

VBからエクセルのテキストボックスの名称を取得したい

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

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

  • ベストアンサー
  • TTak
  • ベストアンサー率52% (206/389)
回答No.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 にて動作確認

masa00
質問者

お礼

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

関連するQ&A

  • テキストボックスの大きさを、基準の大きさに戻す(エクセルVBA)

    図形のテキストボックスの大きさを取得して、その値を各テキストボックスの基準の大きさとして記録しておき、テキストボックスの大きさをマウスでドラッグして大きさを変えた後、ボタン1つでもとの大きさに戻したいのですが、どのようにすればよいでしょうか? 1)図形のテキストボックス、大きさの取得方法は? 2)基準の大きさと記録する方法は? 3)記録された大きさに戻すには?(シート上に配置されたボタンで実行) ※ 複数のシートに複数のテキストボックスがあります。 ※ シート毎にセットします。(シート毎にテキストボックスのサイズが違う為) ※ 現在、各テキストボックスには、基準位置がセットしてあり、ボタンで基準位置へ戻る仕組みが組まれています。(これをそのままにして・・・) ※ エクセル97と2000で使えるようにします。(作成は97) 宜しくお願い致します。

  • Excel : テキストボックス中のテキストの検索・置換

    Excelの図として貼り付けたテキストボックスにテキストが入力されていて、そのテキストボックスが数十個、シートに貼り付けられています。またそれが30シートくらいあります。 このたくさんのテキストボックスに入力されたテキストを複数のシートに渡って一括置換する方法はありませんでしょうか。

  • Excelのテキストボックス内の文字取得

    シートに大きなテキストボックスを作成し、アンケートイメージで自由記述させてます。 このテキストボックスの内容をVBAで取得してCSVファイルを作成したいのですがどうすればよいのでしょうか? <イメージ> 「氏名」と「内容」の2つのテキストボックスがあります。   氏名 : 日本太郎      内容 : はじめまして         今年の夏は海に・・・・・・・・・                  ****************         株式会社○○           日本太郎         ****************     これをCSVにすると   日本太郎,はじめまして 今年の~ ********  としたいです。   改行コードも含んで取得したい   また、出来たら文字数制限(1000文字に制限したい)の仕方も?    Excel2000を使用してます。   どうかよろしくお願い致します       

  • エクセルとVBのマッチング

    エクセルのデータのマッチングでVBを使おうと思っていますが、苦しんでます。 エクセルのシート1に参照元になるデータを取得する(ID、氏名など6つの項目)。 VBのユーザーフォームで6つのテキストボックスを用意する。 ユーザーフォームに入力されたIDがシート1のIDと一致したら、ユーザーフォームのテキストボックスにID以外の項目をシート1から拾い出す。 登録ボタンを押すとIDを含めた6つの情報がシート2に移動する。 といった処理をVBで行いたいと思うのですが、どなたかご教授下さいませんでしょうか。 よろしくお願い致します。

  • VBからExcelに書き込む方法

    こんにちは。VB6.0(SP5),Excel2000,Win2000でVBの勉強をしています。 VBでコマンドボタンを押した時に、テキストボックスのデータを、Excelに書き込みたいと思っています。 特定のExcelに書き込むことは「GetObject」で出来たのですが、名前がわからない場合はどうしたらよいのでしょうか? ※ExcelはVBから起動したものではなく、人が任意のファイルを起動しています。Excelの名前はわかっていません(任意なので、何かわかりません) このような場合に、VBから書き込むのは可能なのでしょうか? よろしくお願いします。

  • エクセルのテキストボックスをVBで操作できない

    こんにちわ。 VBからエクセルを開いて、帳票を出力したいのですが、 エクセルはフォーマットシートを用意して、そのシートをコピーして書き込むようにしています。 セル単位での書き込みでは問題ないのですが、図形描画のツールボックスにある、「テキストボックス」への書き込みの仕方がどうしてもわかりません。 エクセルのマクロ記録を使って、調べたのところその場合一回目はきちんと書き込んでくれますが、二回目はなぜか「オブジェクト変数 または WITHブロック変数が設定されていません」というエラーが出ます。 なにか開放しなければならないのでしょうか? 一応、実行したマクロを載せておきます。 g_sheetwk.Shapes("text1").select Selection.Characters.Text = "aaaaaa" また、rangeオブジェクトか、shapeオブジェクトにsetしようと試みても、「型が一致しません」と言われてしまいます。 解決策があればお願いいたします。

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

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

  • VB6のテキストボックスについて

    VB6で作成したプログラムを実行すると、WIN95とWIN98とで違う動作をします。 テキストボックスを右詰め(数字入力のため)に設定しているのですが、 WIN98で実行すると問題なく動作し、 WIN95で実行すると常に左詰めになってしまいます。 常に右詰めになるようにするにはどうしたらいいのでしょうか。

  • VBAでExcel上のテキストボックス内容をすべて取得するにはどうすれ

    VBAでExcel上のテキストボックス内容をすべて取得するにはどうすればいいでしょうか。 Object.textの場合200文字程度までしか取得できません。

  • エクセルでテキストファイルからフォームのテキストボックスにテキスト挿入するマクロ

    マクロでフォームのテキストボックスに直接テキストファイルからテキストを挿入したいのですが出来ますか? opentextでエクセルシートに入れてからフォームにコピーすることはできたのですが、それだと重くなってしまうので直接取り込みたいんですがうまくいきません。 VBやJAVAのreadlineのようなものは使えないんでしょうか。