• ベストアンサー

エクセルVBAで CSVファイルからのデーター参照

エクセル2000を使用しています。 CSVで社員リストを作成して、エクセル上の指定のセルに 氏名を入力すると、年齢、性別、入社日等が他のセル表示出来るように 指定のですが、VBAでやるとすれば、どの様なコードになるのでしょうか??  現在は、OPENイベントを使用して、エクセルの別のシートにCSVファイルの全ての内容を読み込んでいます。そしてMAINのシートではLOOKUPを使用しているのですが、ファイル起動時に時間が掛かり、困っています。 エクセルとCSVの間で直接、データーのやり取りをしたいのですが・・・。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >OPENイベントを使用して、エクセルの別のシートにCSVファイルの全ての内容を読み込んでいます。 OpenText とか、QueryTables.Add で読んでいるのだと思います。しかし、単独で、CSV を読み込むなら、手間は掛かりません。また、事前バインディングでも、DAO,ADOやODBCなどオブジェクトからインスタンス生成する時にオーバーヘッドが生じてしまうように思います。遅い速いを言うなら、ある程度の違いはあっても、だいたいどれも同じではないでしょうか。 書き換えは、そのままでは出来ませんが、関数なら、開かないままに、以下のようにすればよいです。書き換えするときに、直接、開けばよいと思います。 サンプル A1に検索値をおく場合。 =VLOOKUP(A1,'C:\Documents and Settings\[User Name]\My Documents\[Test1.csv]Test1'!$A$1:$G$20,2)

その他の回答 (2)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

#1さんの回答の通りですが(参考URLをご覧下さい)、「やり取り」の「取り」は出来ても、「やり」の方は、CSVを部分的に更新する事はできないのではないでしょうか? 「やり取り」したければ、CSVではなく、mdb(Access2003までのファイル形式)形式にしてはいかがでしょうか。エクセルから新規に作成する事も可能です。(Accessの入っているPCがあれば、そちらで作って移動する方が楽ですが) ?http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_030.html? ?http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_070.html?

参考URL:
http://blog.livedoor.jp/akf0/archives/51387288.html
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

ODBCでテキストドライバーを使用して「テーブルとして」接続する。

関連するQ&A