• 締切済み

AccessのDBをExcelのListboxに読み込む方法

AccessのMDBファイルをExcelのListboxに読み込みたいのですが、方法がわかりません。 要はExcelのVB上の変数に、MDBファイルのデータが読み込めれば良いのですが・・・ どなたか分かる方いらっしゃいませんか?

  • dande
  • お礼率16% (1/6)

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

アクセスのデータを取りこむには、もちろん接続が必要となります。 環境と接続法式が記載されていませんので、DAO接続でのサンプルを作りました。 個人的にはADO接続がいいと思っておりますが、接続文字が環境により不定なため、使用しませんでした。 DAOを使用するためには、VBAの編集画面にて[ツール][参照設定]にて Microsoft Office x.x Object Library (x.x 部分はできるだけ数字が大きいものを使用してください。) を指定する必要があります。 質問の内容からすると、Accessデータを読み込めたらOKだと思って、リストボックスへの代入部分は作成しておりません。 プログラム中の「PRINT DATA」となってるコメント部分を、適当に変更してください。 開発環境:EXCEL97 Option Explicit Sub Main()   '定数   Const DB_FILE  As String = "c:\test.mdb"   Const TBL_NAME As String = "テーブル1"      'DB操作変数   Dim acDB    As Database   Dim acRs    As Recordset   Dim strSQL   As String      'ワーク変数   Dim intFldCnt  As Integer   Dim i      As Integer         'DB/RECORD OPEN   Set acDB = OpenDatabase(DB_FILE)   strSQL = "select * from " & TBL_NAME   Set acRs = acDB.OpenRecordset(strSQL)         'PRINT DATA   intFldCnt = acRs.Fields.Count   Do Until acRs.EOF     For i = 0 To intFldCnt - 1       Debug.Print acRs(i).Value,     Next i     Debug.Print     acRs.MoveNext   Loop    PGMEND:   'ALL CLOSE/FREE   acRs.Clone   acDB.Close   Set acRs = Nothing   Set acDB = Nothing End Sub

dande
質問者

お礼

ありがとうございました。 実は昨日解決できました。申し訳ありません。

関連するQ&A

  • tableからlistboxにデータをならべるにはどうしたよよいのでしょう

    VBを勉強しております。accessをデータベースにしてデータをlistboxに並べたいのですが、なんとかテーブルまではたどりついたのですが、listboxにならびません。WEBや書物を参考に listbox1.databindings.add("text",table,"○○")としてみたのですが だめでした。どのようにするとlistboxにデータがなるぶのでしょう。

  • Excel → Access データをインポート

    OS WinXP Pro SP2 Office 2000 SP3 はじめまして。 マクロ(Excel VBA)を記述しているExcelファイル(Xls_Macro.xls)とインポート用データのExcelファイル(Xls_Data.xls)は別々のファイルになっていて、マクロを実行するとExcelファイルとインポート用データのExcelファイルのデータをAccessファイル(Access.mdb)にインポートする仕組みを開発しています。 インポート用データのExcelファイル(Xls_Data.xls)をADOで接続しレコードセットでデータを取得し、Accessファイル(Access.mdb)もADOで接続しレコードセットの「.AddNew」でAccessファイル(Access.mdb)に更新しようと考えています。 この考え方で問題ないのでしょうか!? もっと簡単な方法があるという方や、何か良い方法をお持ちの方 いらっしゃいましたら、よろしくお願いいたします。

  • ListBoxのデータを高速でファイルに書き込む方法 VB.NET

    ListBoxに大量のデータを登録してありそれをファイルに保存する場合 Dim data As String For i As Integer = 0 To ListBox1.Items.Count - 1 data = data & ListBox1.Items(i) & VbCrLf Next という方法で変数に読み込むとデータが大量にある場合 非常に遅く、OutOfMemoryのエラーが出てしまったりするのですが、 このような場合により適切な方法がありましたらご教授頂けないでしょうか。 宜しくお願いいたします。

  • ExcelでListBoxを閉じるには?

    Excelにリストボックスを作成します。 そして、特定のセルの値が変更されたら、入力候補をリストボックスに表示する。 リストボックスの項目をダブルクリックまたはEnterキーを入力したら、 リストボックスを非表示にする。 (要は、オートコンプリートなんですが、入力候補は別シートの値を表示したい) ということをしたいのです。 が、VBAで Private sub ListBox1_KeyDown(...) ListBox1.Visible = false end sub とやってしまうと、excelがアプリケーションエラーで死んでしまいます。 どのようにすればよいのでしょうか? よろしくお願いします。

  • 100万行位のファイルを出来るだけ速くListBoxに登録したい

    vbCrLfで区切られた100万行位のテキストファイルがあり、 これを出来るだけ速くListBoxに登録するには どのような方法が良いでしょうか。 現在はStreamReaderで変数strに読み込んで、 Dim Data() As String = Split(str,vbCrLf)で配列に読み込み、 ListBox1.Items.AddRange(Data) で登録しているのですが、何分もかかってしまいます。 良い方法がありましたら、ご教示頂けると助かります。

  • Excel VBA ListBoxのマウスホイールでエラーになる

    エクセルマクロでListBoxを使ったのですが、そのListBoxにフォーカスが当たっている状態でマウスホイールを回転させるとエラーになります。VB6.5でなるようです。回避策はないものでしょうか?

  • VB2008 Expressで、Excelファイルへのアクセスについて

    VB2008 Expressで、Excelファイルへのアクセスについて質問します。 プログラミングが本業ではありませんが、社内で使用するツールとして、VB6+ADOで、AccessのMDBを使ったDBソフトを作った経験はあります。 そろそろ、.netを勉強しようと思うのですが、手元にあるのは、VB2008のExpressバージョンです。 これを使って、ExcelのxlsをDBのように扱うことは可能なのでしょうか? 「DBのように」というのは、xlsファイルをレコードセットに格納し、条件にあったレコードを抽出することを想定しています。 同様なことが、ExcelVBAで可能ならば、それでもいいのですが。 よろしくお願いします。

  • MS Accessを共有した際にファイルが壊れるのを回避する方法

    ちょっとしたツールをAccessで開発したいのですが、 Accessファイルを共有するとファイルが頻繁に壊れると伺いました。 そこで以下のような回避策を考えてみたのですが、 効果はありますでしょうか。 これでは、あまり意味がないとか、他に注意したほうが良い点等ありましたら、アドバイスいただければと思います。 なお、ツールは、50名位が使用(同時アクセスは3名~4名程度)予定で、 サーバ上にメインのmdbファイル(以下「サーバmdb」)を、各クライアントにもそれと連携するmdbファイル(以下「クライアントmdb」)を置くことを想定しています。 (1) データは全てサーバmdbで保持する。クライアントmdbには、入力用のフォームと、サーバmdbから取得したデータを一時的に保持するテンポラリのテーブルを持つ。 (2) クライアントmdbからサーバmdbにアクセスし、必要なデータをクライアントmdbにインポートする。 (3) クライアントmdbで、取り込んでデータをもとに、データの追加・修正を行い、当該データをサーバの所定のディレクトリにCSVで出力する (4) サーバmdbは、日次で、所定のディレクトに配置された、クライアントmdbから出力されたファイルを読み込み、データを更新する (5) (4)の読込み・更新作業中は、クライアントmdbからサーバmdbにはアクセスしない(外部ファイルで制御) 以上です。 要は、クライアントmdbが、直接サーバmdbを更新しないようにし、参照のみにするということです。 よろしくお願いします。

  • Access起動中にエクセルからADOでデータの更新ができない

    こんばんは。原因がわからないので質問させてください。 SQLサーバーのデータをAccessのmdbへリンクテーブルしています。 (SQLサーバー → Access) 全て一つのパソコンで行なっています。(LANには接続していません) Accessのmdbファイルを起動している時に ExcelからSQLサーバーのAccessにリンクしている上記のテーブルへ ADOを使ってデータを追加しています。 (Excel → Access)  しかし、「rs.Update」の部分で  「ODBC--リンク テーブル'テーブル1'での更新に失敗しました。」 となってしまいます。 なので、一度mdbファイルを落として、コードを再開すると通るので ADOでExcel → Accessにデータを追加し終わってから再度mdbファイルを立ち上げています。 また同じ状態(mdbファイルを起動)で Excel → SQLサーバー へ更新クエリをしようとすると「時間切れになりました」となります。 (こちらもmdbファイルを落とすと再開できます。) いちいちmdbファイルを落とすのめんどうなのですが 回避する方法はありますか? cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\Users\Documents.test.mdb" rs.Open "テーブル", cn, adOpenStatic, adLockPessimistic rs("フィールド") = True rs.Update '保存 rs.Close: Set rs = Nothing というコードを書いています。 Accessを落とせば正常に動きます。 ご教授よろしくお願い致します。

  • Access(アクセス)のDB(データベース)の作り方。

    はじめまして、Access(アクセス)初心者です。 生産管理をやっているのですが、この度アクセスを用いて管理していこうかと思い、勉強中です。 生産管理といっても、在庫や顧客情報など色々なデータベースが必要であることがわかりました。 作成しているうちに、ごちゃごちゃしてわからなくなり、 結果何がしていのかわからなくなった次第です。(笑) ~質問~ 生産管理を1つのアクセスファイルで完結するのと、 在庫管理や顧客情報などの小さく分けたファイルを用いてテーブルのリンクを行うのとでは、どちらがいいのでしょうか? 私の思いとしては、小分けにしたファイルを用いて作った方がわかりやすいのですが、テーブルのリンクをした時に何らかの弊害が発生するのでしょうか? ~要約~ (1) 生産管理.mdb   (在庫管理テーブル)   (顧客情報テーブル)   (工程管理テーブル)   (社員情報テーブル) (2) 生産管理.mdb   在庫管理.mdb   顧客情報.mdb   工程管理.mdb   社員情報.mdb   (各データベースをリンクする) データ量にも関係すると思うのですが、 データベースを構築するにあたり(1)と(2)はどちらがいいのでしょうか? また、テーブル等をリンクした場合、発生する弊害はあるのでしょうか? ご指導の程お願い致します。

専門家に質問してみよう