• ベストアンサー

VBのデータ

 VBのデータのとこにIDを入れるとそのIDのとこに飛ぶようにしたいんですがうまく出来ません どうすればいいんでしょうか? (エクセルとVBを使い住所録DBを作成した) (勉強のためです)

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

  • ベストアンサー
  • Te-Sho
  • ベストアンサー率52% (247/472)
回答No.5

#1からです。 db1というコントロールはデータベースのコントロールでしょうか? そのデータベースのコントロールをフィールド単位に参照したり、その検索したレコードのフィールドを書き換えてupdateするようなメソッドは用意されていないでしょうか? お使いのコントロールの使い方を見ているとそんな使い方が出来ると思います。 後は#2の方が仰っているようにCreateObjectでExcelオブジェクトを呼び出し参照設定でMicrosoftExcel*.0ObjectLibraryを定義すればVBAと同じようにCellやRangeのオブジェクトが呼び出せるようになります。 #3の方がお書きになっているのは既にCreateObjectでExcelオブジェクトを作成してからのお話ですね。 VBのコードとしてDBのようにアクセスするのでしたらDBアクセスコントロールで追加と更新のメソッドをhelpで調べればサンプルが載っているはずです(この部分は曖昧です。)

daisuke-123
質問者

お礼

皆様 ご回答ありがとうございました。

その他の回答 (4)

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.4

たとえば IDが A1からA1000 まで 入ってたとします。 dim r as range set r = range("A1:A1000").find("100") if not r is nothing then msgbox r.address(0,0) end if んで 取得できます。

  • ryu_d
  • ベストアンサー率58% (33/56)
回答No.3

つまり、エクセルのセルをプログラムからコントロールしたいという認識でいいのでしょうか? と仮定すると CreateObjectをつかわれては?

  • Te-Sho
  • ベストアンサー率52% (247/472)
回答No.2

すいません。もう少し具体的に書いてもらえませんか? "VBのデータのとこ"と"そのIDのとこ"がどこかわかりません。 そもそもVBとはVBですかExcelのVisualBasicEditerでしょうか。 まず、具体的な仕様をわかりやすく説明することもプログラムを書くことにおいて重要となります。

  • Te-Sho
  • ベストアンサー率52% (247/472)
回答No.1

すいません。もう少し具体的に書いてもらえませんか? "VBのデータのとこ"と"そのIDのとこ"がどこかわかりません。 そもそもVBとはVBですかExcelのVisualBasicEditerでしょうか。 まず、具体的な仕様をわかりやすく説明することもプログラムを書くことにおいて重要となります。

daisuke-123
質問者

補足

いえVisualBasicです。 エクセルに住所録がはいています。 それをVB側で動かすのです。 そしてデータの数字(ID)が入っている部分を直接触りたいんです。 たとえばIDが100の人に飛ばしたりしたいのです。 プログラムはこんなんです。 Private Sub Command_sai_Click() Text_sa = 0 Command_sai.Visible = False End Sub Private Sub Command1_Click() Dim LngReturn As Long Dim StrCommand As String StrCommand = Trim$(Text_hp) LngReturn = ShellExecute(Me.hwnd, "open", StrCommand, vbNullChar, vbNullChar, Sw_Shownormal) End Sub Private Sub Command2_Click() Dim LngReturn As Long Dim StrCommand As String StrCommand = Trim$(Text_mail_ke) If LCase(Left(StrCommand, 7)) <> "mailto:" Then StrCommand = "mailto:" & StrCommand End If LngReturn = ShellExecute(Me.hwnd, "open", StrCommand, vbNullChar, vbNullChar, Sw_Shownormal) End Sub Private Sub Command3_Click() Dim LngReturn As Long Dim StrCommand As String StrCommand = Trim$(Text_mail_pc) If LCase(Left(StrCommand, 7)) <> "mailto:" Then StrCommand = "mailto:" & StrCommand End If LngReturn = ShellExecute(Me.hwnd, "open", StrCommand, vbNullChar, vbNullChar, Sw_Shownormal) End Sub Private Sub Command4_Click() Db1.Caption = Text_j End Sub Private Sub Command5_Click() Msg = MsgBox("データを削除してよろしいですか?", vbOKCancel + vbQuestion, App.Title) If Msg = vbOK Then Text_sa = 1 Text_name = "" Text_yuubin = "" Text_add = "" Text_tel = "" Text_fax = "" Text_mail_ke = "" Text_mail_pc = "" Text_hp = "" Text_sei = "" Text_ketu = "" End If End Sub Private Sub Command6_Click() End Sub Private Sub Db1_Reposition() If Db1.Recordset.EOF Then Db1.Caption = Text_no.Text Else Db1.Caption = Text_no.Text End If Command_sai.Visible = False Timer1.Interval = 10 End Sub Private Sub Db1_Validate(Action As Integer, Save As Integer) If Db1.Recordset.EOF Then If Save Then Text_no.Text = CStr(Db1.Recordset.RecordCount + 1) End If End If End Sub Private Sub Timer1_Timer() If Text_sa = 1 Then Msg = MsgBox("このIDは一度削除されています。基本的には再利用はお勧めできません", vbOKOnly + vbQuestion, App.Title) Command_sai.Visible = True Timer1.Interval = 0 End If End Sub エクセルには下記のデータがはいています ID 名前 削除 〒 住所 TEL FAX 携帯 メール(携帯) メール(PC) HP 生年月日 血液型

関連するQ&A

  • VBはじめたんですけど・・

    VBを勉強しているのます いまエクセルで作った住所録のデータをVBにとりこんで 編集や追加などを出来るようなプログラムをつくりたいのですが どうやってもエクセルのデータをとりこめません プロパティの設定がおかしいのでしょうか? よきアドバイスをお願いします 初心者なので詳しくお願いします

  • VB2010のデータ

    初歩的な質問ですみません。 無料でVB2010をインストールして、遠い昔の記憶でVBを扱っていたのでプログラムを作ろうと思っています。。。。 で。かんじんなデータ(アクセスでいえばテーブル)は、どうやってなにで作っていいのかわかりません。たとえばSQLSeverを買ったりとかはしないので、エクセルにデータを作ってそこから読んでVB2010のListboxで表示する。VB2010で登録したデータをエクセルでデータとして管理するってことをしたらいいのでしょうか? VBの文法を扱うサイトはあるのですが、肝心なデータベースの作り方というか、データベースはどうやって構築するのかがわかりません。 どなたかわかりやすくご教授ください。

  • VB 2005 データテーブルのソートについて

    恐れ入ります。 VB 2005 初心者です。 さっそく質問させていただきます。 VB 2005にて、SQL Server 2003を利用し、 とあるシステムを作成しています。 その中で、DBより取得したデータを、 DataTableのdatatblという変数に格納し、 さらにそのdatatblより、とある条件にて値が欲しくなったので、 dr = datatbl.Select("clm = " & strData & " AND clm2 = '0'") のようにし、DataRowのdrという変数につっこんでます。 ここで、ソートによる並んだデータとして値が必要になりました。 DBで取得し、条件でDataRowにつっこんだ後に、データを ソートすることは可能でしょうか? 可能であれば、やり方を教えていただけると幸いです。 宜しくお願いいたします。

  • VB.NETで罫線付きのデータを印刷したい

    VB.NETでワードで作成するような表イメージのデータを印刷したいと考えています。 参考書などで調査したところ、文字の印刷、線(図形)の印刷等の機能はあるのですが、このような機能を組み合わせて印刷するしかないのでしょうか。もっと簡単に印刷する方法があれば、教えていただけませんでしょうか。 もし、簡単に印刷するなければ、VB.NETでCSVファイルへデータを出力し、それをACCESSで読ませて印刷しようかとも考えています。(VBを使用している理由ですが、データがSQLサーバーのDB内にありそれを取り出すのがVBだと比較的簡単にできるからです。)

  • エクセルデータをVBで検索できますか?

    お世話になります。 VBは学校で半年かじっただけの初心者です。 よってちぐはぐな点があるかもしれませんが お許し下さい。 エクセルで住所録を作ったとします。 別にVBのフォームで検索窓を作り、そこに単語を記入してボタンを押すと 下の表示窓にエクセルの中の該当する行が出てくる、という ことは果たして可能でしょうか。 もし可能でしたら、そのプログラムを公開している サイトを教えて頂きたく思います。 もしそれが無理でしたら、 住所録のデータをボタンを押せば検索できるシステムというのは どのようにすればできるでしょうか。 HTML化して検索となるのでしょうか。 Excelでのフィルタなどではなく、ボタンを押して出てきて欲しいんです。 どんな些細なことでもいいので書きこみお願い致します。 ポイントはきちんと発行致します。 よろしくお願い致します。

  • VB6.0とVB.NETの違い

    学校の実習での復習で分からないところがありまして 文献を調べたのですが、解決しなかったので教えてください。 最近VB.NETを使う機会が多くなりまして、VB6.0との違いについて悩んでおります。 かつて、VB6.0で基礎的な参考書にデータコントロールを使用してのデータベース(エクセルを用いての)を作成したことがあったのですが、VB.NETにしてからは、同じ方法でのアプリケーションの作り方(データコントロールとエクセルを使っての方法)がわからなくなってしまいました。 どなたか、教えてください。おねがいします。

  • access → Oracleへのデータ移行(VB.NETで)

    お知恵を貸してください。 ただ今、VB.NETでアクセスで開発されたアプリケーションを、 VB.NETに移行する開発をしているのですが、その中で、 現在のDBはアクセス、移行後のDBはオラクル10gなんですが、 何か良い移行方法は無いでしょうか? ちなみに、テーブル名、レコード名は変更しますので、そのまま移行ではありません。 私が考えているのは、アクセスのデータをエクセルにコピペし、 それを.NETで読み込んでテープルに入れて1レコードずつ オラクルに書き込んで行こうと考えております。 しかし、上記の方法でエクセルの読込方法が良く分かりません。 一旦、エクセルに取込む方法の場合の読込方法を教えてください。 また、もっと効率の良い方法をご存知でしたら教えてください。 開発環境は  OS : windows XP Pro 開発ソフト : VB.NET DB : Access 2003 SP2 DB : Oracle 10g です。なにぶん、VBでの開発経験が浅いので、 猿でも分かるように(W)お教えいただけると幸いです。

  • VB6.0について教えてください。

    毎回お世話になっております。 現在、ACCESSで簡単なDBソフトを作成していますが、VB6.0で作成したいと思っています。VB6.0はACCESSのようなクエリを作成したり、一度作成したクエリを使って新たにクエリを作成したりできるのでしょうか? ACCESSをVBに置き換えた際、一番の違いやアドバイスを頂けたら有難いです。よろしくお願いいたします。

  • VB.NETからエクセルを起動して、エクセルでVBを閉じたい。

    こんにちは。 先日、エクセルのフォームを最前面に配置したいという 質問をさせて頂いたものでございます。 それで、SetWindowPosのAPIで設定する方法を教えて頂いたのですが、 最前面にする事は出来たのですが、フォームを動かすと ブックはその一つ下に現れてしまい、 ブックを最背面に配置するなどを試みてみたのですが、 どうもうまく行かないので、 エクセルから直に立ち上げることが出来ないようにして VB.NETのフォームを作ってエクセルにデータを送ろうかと思いました。 それで、データを送る方法は何とかなりそうなのですが、 VB.NETのフォームからエクセルを起動して、 次にエクセルからそのフォームを出したり、隠したりしたいのですが、 その場合、VB.NETのフォームのなんと言うハンドルを取得すればよいでしょうか? IDにも色々あるようで、どれを使えばよいのか分からなくなってしまいました。 そのIDはVBのフォームを起動した時に、エクセルと共有するiniファイルなどに、書き込んでおこうかと思っています。 よろしくお願いいたします。m(__)m

  • VB2005でのエクセルへのデータ出力

    タイトルどおりなのですが、DBからマスタのデータを単純にエクセルに出力するだけなのですが、どういったやり方が一番高速に処理できるのでしょうか? マスタのデータをデータテーブルに取得して、データテーブルをループさせながら、1レコードごとにエクセルに出力するようなやり方しか思いつかないのですが、もっと効率的で高速に処理できる方法があれば教えて下さい。 ちなみに、エクセルは新規ファイルではなく1行目にマスタのテーブルのカラム名を記述している既存ファイルのエクセルに出力していく形になります。 画面の動作としては、マスタメンテの画面にある「出力」ボタンをクリックすることで、ファイルダイアログを表示して保存先を決めたら、出力開始というイメージです。 できれば、サンプルコードなどあれば有難いです。 宜しく、お願いします。 開発環境: OS:WinXP SP2 DB:Oracle 10g(?)、すみません。バージョンまであってるかは不明です。 言語:VB2005Pro Excel:Excel2000

専門家に質問してみよう