• ベストアンサー

VBAで複数のCSVからレコードセットを作りたい

KenKen_SPの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。 > 2つのCSVを結合した結果をADOでレコードセットに格納したい場合 > どのようなソースになるのでしょうか? 2 つの CSV を 1 ブック上にシートを分けて展開すれば、あとは関数 VLOOKUP 等と作業列の使用で何とかなることだと思います。 ゆえに疑問に思うのですが、レコードセットを作成した後に何がしたい のでしょうか? 目的が書かれてません。 単にレコードセット作成の実験的コードを知りたいのか、実用に耐える ものが知りたいのか、目的によって回答が変ってくると思います。

takac4u
質問者

補足

返信が遅くなりました。 さて、なぜこのようなコードを知りたいのかといいますと、今までMSSQLでDTSを使用し取り込み、ODBCでエクセルにストアドプロシージャの値を返すような形でいたのですが、今度DBサーバーを撤去しするので、MSSQLを使用せずにCSVからMSSQLを介さず直接エクセルにということになりました。そこで、どうしたらよいか思案中というところでして。 VLOOKUP等を使用する場合も考えましたが、SQLを使った集計の方が早いかなと思いこういった質問をしました。また、テーブルのレコード数が65535を超えるものもありますので

関連するQ&A

  • 【VBA】レコードセットからグラフを作成

    Excel2002とAccess2002を使っています。 (1)Accessから取得したレコードセットをデータソースにして  グラフを作成する事はできますでしょうか?  (シートにレコードセットを格納せずに) (2)上記が実現不可なら、レコードセットを配列に代入し、  その配列をデータソースにしてグラフを作成する事はできますでしょうか? レコードセットを一度シートに吐き出す事は考えていません。 (1)、(2)とも具体的なコードを書いて頂けると助かります。 よろしくお願いします。

  • 作成したレコードセットのCSV出力の方法

    test.csv とtest2.csvから作成したレコードセットをtest3.csvに出力したいのですが、 ”指定した式は、いずれかの引数とデータ型が対応していません。” とエラーが帰ってきます。 色々試したのですがうまくいきません、 作成したレコードセットをCSVファイルにエクスポートする方法を教えてください。 Private Sub コマンド6_Click() Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Set CN = New ADODB.Connection CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\;" & _ "Extended Properties='Text;HDR=YES'" Set RS = CN.Execute("SELECT * FROM test.csv a LEFT JOIN test2.csv b ON a.tel = b.tel") DoCmd.TransferText acExportDelim, , RS, "C:\test3.csv", True, "" Set RS = Nothing Set CN = Nothing End Sub

  • 【エクセルVBA】DBのデータをCSVに

    VBA初級者です。 oracleDBのデータをCSVへ出力するマクロをVBAで作成中ですが、実装方法が分からず困っています。 ・DB接続はoo4o ・エクセルは2010 ・SQLで取得したデータを1レコードづつCSVに書き出したい ・カラム名をヘッダーとして書き出したい 以下のような実現方法でできるか…?と考えたものの、 肝心のマクロ(VBA)でのDBデータの取得⇒CSVへの書き込み方法がいくら調べてもわかりません。 CSVからDBへのインポートはたくさんあったのですが…。 そもそも取得したレコードを配列で保持して書き出す、という考え方が合っているのか?ヘッダー(カラム名)はどのように書き出せばいいか? など疑問が尽きません。何卒お力添え頂ければ幸いです。 --ボタンクリック時のアクション-- (1)変数定義 (2)DB接続情報確認 (3)DB接続 'DB接続 Set oraSession = CreateObject("OracleInProcServer.XOraSession") Set oraDatabase = oraSession.OpenDatabase(dbSid, dbUser & "/" & dbPass, ORADB_DEFAULT) (4)書き込み用のCSVファイルを作る (5)SQLを実行し返ってきた結果をsplit関数で配列としてwriteListにAddする (5)作成したCSVファイル内にwriteListのデータをPrint #で書き出す (6)完了メッセージを表示 MsgBox "完了しました " (7)DBの切断 'DBクローズ Set oraDatabase = Nothing Set oraSession = Nothing --SQLを実行するメソッド-- (8)SQLを記述、SELECT結果を(5)に返す 恐れ入りますがよろしくお願いいたします。

  • 複数の同一レコードをまとめたい

    No 商品コード カラー サイズ 入荷日 在庫数 1     100     1     M     2008/01/01     1 2     100     1     M     2008/02/02     2 3     101     2     L     2008/01/01     1 4     101     2     L     2008/02/02     1 5     101     2     L     2008/03/03     1 6     102     1     L     2008/01/01     2 7     103     1     M     2008/02/02     1 上のような検索結果を得たのですが、 商品コード、カラー、サイズの値が同じ時には レコードを下のように、一行で表示させたいと思っております。 どのような文を書いたらよろしいでしょうか? No 商品コード カラー サイズ 入荷日 在庫数 1 100 1 M 2008/01/01 2 3 101 2 L 2008/01/01 3 6 102 1 L 2008/01/01 2 7 103 1 M 2008/02/02 1 初心者で質問の仕方もままならないので 非常にわかりにくい質問だと思いますが、 ご教授いただけたらうれしいです。 ちなみに、JBUILDERで作業しております。

    • ベストアンサー
    • Java
  • レコードセットの中身を配列に、そしてワークシートに。

    今excel2003のVBEで外部データベースから店舗別の売上データを取得し それをエクセルのワークシートに出力するというプログラムを作成しています。 ここで問題なのが扱うデータの量が多すぎでレコードセット検索を 使用してそれをDo Until RS.EOFで各店舗の日別売上に出力していくとものすごく時間がかかってしまいます。 そのため配列を使う方法を見つけたのですが配列を使ったことなくて どうしたらよいのかわかりません。 なんとかレコードセットの中身を配列に格納後にそれを一気に範囲貼り付けしたいと思います。 でも配列内で売上表のフォーマットに整形を行うことができるのでしょうか? レコードセットのフィールドは店舗別日別売上、売上日付、店舗コード、ブランドセクションです。 売上日付|ブランドセクション|店舗コード|店舗別日別売上 20100201      100     1001     100000 20100201      100     1002     10000 ・          ・      ・      ・ ・          ・      ・      ・  売上表のフォーマットは縦列に1から月末までの日にち、横行に各店舗名が並んでいて各店舗の日別売上が一目でわかるつくりになっています。 各店舗名の上に店舗コードを持たせてそれを元に入力列を取得するという方法も考えたのですがそれも効率的とは思えません。 なにか良い方法はないでしょうか? アドバイスお願いします。 最後に文章だけの説明でわかりにくくてすみません。 よろしくおねがいします。

  • 複数レコードを1変数にセットするには

    以下、ご回答、よろしくお願いします。 ストプロで、カーソルに格納したレコードを、1変数にセットしたく思います。 (この変数を本文にして、メールをはき出します。) AccessVBAでは -------------------------- Do Until rs.EOF   strBody = strBody & rs!受注コード & ":" & rs!明細コード & vbCrLf   rs.MoveNext Loop -------------------------- とするところを、sqlのストプロで -------------------------- WHILE @@FETCH_STATUS = 0 BEGIN  select @strBody = (@受注コード + @明細コード) + char(13) + char(10)  FETCH NEXT FROM cur_cust  INTO @受注コード, @明細コード end -------------------------- 等としても、1レコード分のデータしか渡りません。(あたり前ですね。) 現在に手詰まりの状態です。 ご教授、よろしくお願いします。

  • CSVから値の割り出し

    CSVファイルの1行目を渡された引数から値を割り出し、配列(@x)に 格納して、2行目以降も1行目で評価された要素と同じ位置の要素を 別配列(@y,@z)に入れて、渡された複数の引数をもとに下記のように 評価したいのですが可能ですか? 例)CSVファイル:1レコード目:1,1,1,2,2,2,3,3,3        2レコード目:1,2,3,4,5,6,7,8,9        3レコード目:A,B,C,D,E,F,G,H,I 引数:2,3,1なら 結果:2,6,D   @x=2,2,2 @y=4,5,6 @z=D,E,F

    • ベストアンサー
    • Perl
  • SQL*LoaderでCSVから指定した列のみインポートしたい。

    SQL*Loaderを用いてOracleのテーブルにデータを格納 しようと思っています。 格納するデータはカンマ区切りのCSVファイルです。 入力CSVファイルは他テーブル用のファイルなので、 ローダーで落とし込むテーブルとは列数が異なります。 ですので、「CSVの5列目の値をテーブルのAA_NOというフィールドに 格納する。ということが可能なのでしょうか?」 CSVファイルのある行が a,b,c,d,e,f というデータの場合、テーブルには a,e,f とインポートしたいのです。 よろしくお願いします。

  • 複雑なSQLを1本でまとめたい

    Oracle10gで開発をしています。 1本のSQLで下記のような結果を返したいのですが、 やり方がわかりません。 どなたかご教授頂けないでしょうか? Aテーブル No  注文番号 品番 在庫数 注文数 -  ---- -- --- --- 1   001   a001  10    0 2   002   a001  5     5 3   003   b001  10    10 4   004   c001  5     2 5   005   d001  20    0 SELECT * FROM Aテーブル WHERE 在庫数 - 注文数 > 0 結果 No  注文番号 品番 在庫数 注文数 -  ---- -- --- --- 1   001   a001  10    0 4   004   c001  5     2 5   005   d001  20    0 となりますが、 これを 結果 No  注文番号 品番 在庫数 注文数 -  ---- -- --- --- 1   001   a001  10    0 2   002   a001  5     5 4   004   c001  5     2 5   005   d001  20    0 という風に、1番目の結果+1番目の結果にある商品の 他レコードも抽出したいのですが、どうしたらよいでしょうか?

  • 【エクセルVBA】OraDBのデータをCSVへ出力

    VBA初級者です。 oracleDBのデータをCSVへ出力するマクロをVBAで作成中ですが、実装方法が分からず困っています。 ・DB接続はoo4o ・エクセルは2010 ・SQLで取得したデータを1レコードづつCSVに書き出す ・カラム名をヘッダーとして書き出す 以下のような実現方法でできるか…?と考えたものの、 肝心のマクロ(VBA)でのDBデータの取得⇒CSVへの書き込み方法がいくら調べてもわかりません。 CSVからDBへのインポートはたくさんあったのですが…。 そもそも取得したレコードを配列で保持する、という考え方が合っているのか?ヘッダー(カラム名)はどのように書き出せばいいか? など疑問が尽きません。何卒お力添え頂ければ幸いです。 --ボタンクリック時のアクション-- (1)変数定義 (2)DB接続情報確認 (3)DB接続 'DB接続 Set oraSession = CreateObject("OracleInProcServer.XOraSession") Set oraDatabase = oraSession.OpenDatabase(dbSid, dbUser & "/" & dbPass, ORADB_DEFAULT) (4)書き込み用のCSVファイルを作る (5)SQLを実行し返ってきた結果をsplit関数で配列としてwriteListにAddする (5)作成したCSVファイル内にwriteListのデータをPrint #で書き出す (6)完了メッセージを表示 MsgBox "完了しました " (7)DBの切断 'DBクローズ Set oraDatabase = Nothing Set oraSession = Nothing --SQLを実行するメソッド-- (8)SQLを記述、SELECT結果を(5)に返す 恐れ入りますがよろしくお願いいたします。