-PR-
P3mania

お世話になります
EXCELからアクセスを見に行き必要な値を必要な位置に設置するにはどうしたらいいですか?

アクセス.mdb
ID|管理番号|使用者番号|数量|日付|
01|12E22100|12 |1 |2008/01/01
02|12345678|01 |5 |2008/01/01
03|12E22100|12 |1 |2008/01/01
04|12Y22100|12 |1 |2008/01/01
05|001234T7|015 |4 |2008/01/01
06|12E22100|12 |1 |2008/01/01

エクセル.xls
管理番号|01|2|3|4|12|015|
12E22100| | | | |3 | |
001234T7| | | | | |4 |
12345678|1 | | | | | |
エクセルがアクセスを見に行った実行結果です
VBAでこんなことって可能ですか?
そか一度一覧をエクセルのどこかに格納してから関数?
ご存知で詳しく説明できる方よろしくお願いします
できるならVBAユーザーフォームで日付での絞り込みが理想です
  • 回答数6
  • 気になる数0
  • Aみんなの回答(全6件)

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

    • 2008-05-14 10:31:04
    • 回答No.6
    noname#140971

    補足: csv に一旦出力も・・・。

    まったくエクセルは操作したこともない門外漢ですが・・・。

    [イミディエイト]
    ? DBSelect("SELECT * FROM tab1",",",vbCrLf)
    ID,管理番号,使用者番号
    1,1000,10
    2,1001,20
    3,1002;30

    このデータを cvs ファイルで出力しシートに呼び込むなんてこともしたことがあります。
    まあ、エクセルに整形表示する手順を省けないかと思ってやったこと。

    FileWrite "XXX.csv", DBSelect("SELECT * FROM tab1",",",vbCrLf)

    といった感じで出力し、シートに"XXX.csv"を呼び込むという手順。

    シートに"XXX.csv"を呼び込むところはヘルプをみながら作成しました。
    そう難しいことではなかったです。
    補足コメント
    お返事ありがとうございます
    なるほど一度アクセスからCSVに吐き出しそれをエクセル側で拾う方法があるのですね
    勉強になります

    しかしCSVを吸い上げたところで計算させるのはどこでどのように実行させるのかがなぞです

    やはりVLOOKUP系の関数ですかね~?
    投稿日時 - 2008-05-14 14:56:54
    • ありがとう数0
    -PR-
    -PR-

    その他の回答 (全5件)

    • 2008-05-13 16:50:43
    • 回答No.2
    noname#140971

    tab1: ID__管理番号__使用者番号 _1______1000__10 _2______1001__20 _3______1002__30 エクセル: 1000__10 1001__20 1002__30 A列=DBLookup("管理番号", "tab1", "ID=" & 1) A列=DBLo ...続きを読む
    tab1:

    ID__管理番号__使用者番号
    _1______1000__10
    _2______1001__20
    _3______1002__30

    エクセル:

    1000__10
    1001__20
    1002__30

    A列=DBLookup("管理番号", "tab1", "ID=" & 1)
    A列=DBLookup("管理番号", "tab1", "ID=" & 2)
    A列=DBLookup("管理番号", "tab1", "ID=" & 3)
    B列=DBLookup("使用者番号", "tab1", "ID=" & 1)
    B列=DBLookup("使用者番号", "tab1", "ID=" & 2)
    B列=DBLookup("使用者番号", "tab1", "ID=" & 3)

    と、エクセルの各セルに参照する式を書くという方法もあります。
    こんな方法でよかったら DBLookup関数を補足します。
    ただ、 DBLookup関数は、単にSQL文の実行結果を一つだけ戻すシンプルな関数です。
    だから、補足するまでもないかもです。

    [イミディエイト]
    ? DBSelect("SELECT * FROM tab1",,vbCrLf)
    1;1000;10;
    2;1001;20;
    3;1002;30;

    なお、このように各レコード毎のデータを列単位で区切って取得するのも手です。
    この場合は、これらを For-Next等でエクセルの所定の位置にシコシコと表示します。
    補足コメント
    ん~
    なんかむずかしいですね
    いってることが半分ぐらいしかりかいできませんが・・・
    投稿日時 - 2008-05-13 17:00:44
    • ありがとう数0
    • 2008-05-14 01:55:56
    • 回答No.5
    こんばんは。 私は、あながち丸投げというものを否定してはいませんが、今回は、手数が多いような感じがしてくるので、「超初心者」という方には、ADOで構築するのは、VBAでは、完成までは行かないような気がしてくるのです。 >それか一度一覧をエクセルのどこかに格納してから関数? それなら、改めて、関数で検索すればよいです。 Excelに移してしまえば、概ね、簡単に出来ます。ただし、Ex ...続きを読む
    こんばんは。

    私は、あながち丸投げというものを否定してはいませんが、今回は、手数が多いような感じがしてくるので、「超初心者」という方には、ADOで構築するのは、VBAでは、完成までは行かないような気がしてくるのです。

    >それか一度一覧をエクセルのどこかに格納してから関数?

    それなら、改めて、関数で検索すればよいです。
    Excelに移してしまえば、概ね、簡単に出来ます。ただし、Excel上では、やはり、データベース関数でないと、ちょっと、重くなってしまうのではないかと思います。

    なお、一応、ADOでのVBAのポイントだけを書いておきます。しかし、VBAのレベルとしては、中級以上の人でないと、Excel VBAでは難しいと思います。人によっては、そのレベルを「プロのワザ」といいますが、それほどのこともないと思います。Excelだけをやっている人には、なじみが薄いです。

    例:
    ADOの参照設定をしておいて、

     myDBFname ="C:\test1.mdb" '←ファイル名
     myTable = "Table1" '←テーブル
     
     mySQL = "SELECT * FROM " & myTable & " WHERE "
      Set cnADO = New ADODB.Connection
      Connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      myDBFname & ";Jet OLEDB:Database" & ";"

    と、ADO で開いておいて、後は、以下のようなSQL で検索すればよいと思いますね。

    param1 に管理番号
    param2 に開始の日付 '(ここが日付型が文字型か)
    param3 に終了の日付
    で絞り込みます。

    Set rsADO = New ADODB.Recordset 'インスタンスを起こし、

    rsADO.Open mySQL &"管理番号 =" & param1 & "AND 日付 Between #" & param2 &"# And #" & param3 &"#; "

    としていけば、取れると思います。

    それから、確かに、imogasiさんのご指摘の、MSクエリは一理ありますね。Excelさえあれば、MSクエリは使えます。基本的には、VBAは必要ありません。SQL は、MS式に書く必要がありますが、構文自体は、実際に、パラメータクエリにしてしまえばよいわけです。

    検索するときに、QueryTable オブジェクトを使っていたはずですから、それを応用すれば、VBAに換えられます。記録マクロでも残りますので、QueryTable を既存のものを、再利用すればよいです。

    Microsoft Help
    http://office.microsoft.com/ja-jp/excel/HP102161131041.aspx#1

    Excel豆知識41: エクセル:外部データの取り込み(パラメータクエリの利用)
    http://www11.plala.or.jp/koma_Excel/contents6/mame6041/mame604101.html
    補足コメント
    お返事ありがとうございます
    ADOについては自分で生成したものではないですが
    使用可能です

    一度どこかのシートに落とし込みをしてまでは可能です
    しかしどのような関数を使えば良いかわかりません
    MSクエリは試しましたがADOで値をDLできる以上必要はないですね

    関数での検索方法あればご教授願います
    当方としてはセルに関数を入力していくしかないと思い始めています
    投稿日時 - 2008-05-14 14:52:40
    • ありがとう数0
    • 2008-05-13 21:06:25
    • 回答No.4
    noname#79209

    > あなたのスキルでは回答できない代物です。 と言われそうでコワイのですが、 むしろ、アクセス側のフォームで日付で絞り込んで、クロス集計クエリを作成し これをエクセルファイルとしてエクスポートしたほうが楽なように思えますが... ...続きを読む
    > あなたのスキルでは回答できない代物です。
    と言われそうでコワイのですが、

    むしろ、アクセス側のフォームで日付で絞り込んで、クロス集計クエリを作成し
    これをエクセルファイルとしてエクスポートしたほうが楽なように思えますが...
    補足コメント
    お返事ありがとうございます

    そうですねAccess側でならできそうなのですが
    フォーマットが決まっていますので・・・

    逆にフォーマットに関数を入れたらいけそうなのですがその関数もわからず・・・・

    やはりピボットなのですかね~
    投稿日時 - 2008-05-13 23:50:10
    • ありがとう数0
    • 2008-05-13 16:41:00
    • 回答No.1
    Excelのピボットテーブルを使えば一発ではないでしょうか? http://hp.vector.co.jp/authors/VA014071/tips/xl_pvt1.html ...続きを読む
    Excelのピボットテーブルを使えば一発ではないでしょうか?
    http://hp.vector.co.jp/authors/VA014071/tips/xl_pvt1.html
    補足コメント
    お返事ありがとうございます
    PVTではだめです
    決められたフォーマットでの仕様となります
    投稿日時 - 2008-05-13 16:50:41
    • ありがとう数0
    • 2008-05-13 17:01:45
    • 回答No.3
    >エクセルがアクセスを見に行った実行結果です 通常ではエクセルではこういうことは出来ないはず。何も書いてないが、MSクエリを手操作したということですか。 データー外部データの取り込みー・・・ ーー もしそれなら、エクセルのマクロの記録をとると、コードがわかるので、そのコードを適当に修正したら。 ーー MSクセス(ソフト)があれば、クエリで絞って、それをエクセルにエクスポートしたほうが(エ ...続きを読む
    >エクセルがアクセスを見に行った実行結果です
    通常ではエクセルではこういうことは出来ないはず。何も書いてないが、MSクエリを手操作したということですか。
    データー外部データの取り込みー・・・
    ーー
    もしそれなら、エクセルのマクロの記録をとると、コードがわかるので、そのコードを適当に修正したら。
    ーー
    MSクセス(ソフト)があれば、クエリで絞って、それをエクセルにエクスポートしたほうが(エクセルを通じて何でもやるより)簡単では無いですか。
    ーーー
    >VBAでこんなことって可能ですか?
    アクセスのモジュールや、エクセルVBAの仕様経験あるのかな。
    なければ現段階では質問は丸投げです。
    補足コメント
    imogasiさんお返事ありがとうございます

    imogasiさんの現状はADO接続での関数が筋になるのかな?
    ありがとうございました。

    VBA等の作成はしたことありますが
    超初心者です
    参考HPをみながら作れる程度です
    投稿日時 - 2008-05-13 17:15:40
    お礼コメント
     
    投稿日時 - 2008-05-13 18:36:18
    • ありがとう数0
    • 回答数6
    • 気になる数0
    • ありがとう数0
    • ありがとう
    • なるほど、役に立ったなど
      感じた思いを「ありがとう」で
      伝えてください
    • 質問する
    • 知りたいこと、悩んでいることを
      投稿してみましょう
    このやり方知ってる!同じこと困ったことある。経験を教えて!
    このQ&Aにはまだコメントがありません。
    あなたの思ったこと、知っていることをここにコメントしてみましょう。

    関連するQ&A

    -PR-
    -PR-

    その他の関連するQ&Aをキーワードで探す

    別のキーワードで再検索する
    -PR-
    -PR-
    -PR-

    特集


    成功のポイントとは?M&Aで経営の不安を解決!

    -PR-

    ピックアップ

    -PR-
    ページ先頭へ