• 締切済み

AccessDBからExcelへ難題

お世話になります データーベースはAccessで、保存先はExcelとなります おそらくADOだなとまでは分かるのですが 素人なので構築方法がわかりません 注文日たとえば2007/09/25~2007/10/25までの必要な行(お客様名、金額、注文内容など)をB10より以下に貼り付けさせたいのですが 又、ExcelフォームにTextboxを2個配置から、までを入力し実行ボタンを押すとAccessから値がジャンプしてくる方法がりそうです。 分かる方A級の難題ですがよろしくお願いします

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

質問の表現が判りにくい。 「アクセスのテーブルにあるデータを対象に、エクセル側で期間(日付)を指定し、該当データを、エクセルの所定のセル以下の行に貼り付けたい」 が良い表現とおもう。 ーー >分かる方A級の難題ですがよろしくお願いします 初心者が難易度を判定するのは危険がある。大恥をさらすこともあるよ。 例えば下記などはエクセルの機能として用意されているのだよ。 知らないだろうから、難題というだけ。 質問者には荷の思い課題で、丸投げになっており、回答も生かせない恐れが多い。勉強のこと。 ーー 以下エクセル2002の例。 アクセスのテーブルで注文明細 ID 注文日 注文者 金額 注文品名 1 2007/10/01 山田 1000 A 2 2007/10/04 小島 2000 BB 3 2007/10/12 田中 10000 C 4 2007/10/15 木村 4000 DDD 5 2007/10/24 津田 15000 EE 6 2007/10/26 木下 4000 F 7 2007/10/30 植田 9000 GG3 を作った。質問者には既に存在するもののはず。 ーー エクセルの データー外部データの取り込みー新しいデータベースー新しいデータベースクエリーデータソースの選択で Ms Access DatabaseーOK データベース指定 *mdbーOK テーブル名「注文明細」選択 「>」をクリックして、全項目を対象とする 次へ (条件を指定する)注文日 >(大なりを選択) 2007/10/10 AND  (次行に下記条件を追加) < (小なりを選択) 2007/10/25 次へ ソートキー関係 注文日 次へ エクセルにデータを返す データのインポート、で 既存のワークシート A8を指定 OK ID 注文日 注文者 金額 注文品名 3 2007/10/12 0:00 田中 10000 C 4 2007/10/15 0:00 木村 4000 DDD 5 2007/10/24 0:00 津田 15000 EE 6 2007/10/26 0:00 木下 4000 F ーー 残る問題は (A)条件指定(日付)をプログラムから行う (B)インポートするセルの開始行のプログラムから指定 ーー マクロの記録をとって、上記(A)(B)がコードのどの場所に当たるか調べる。 そして自分のプログラムの中でそれらの変数に値をセットし(指定を行い)マクロを実行する。 (A)はDestination:=Range("A17")) のところ (B)は、そのコード行を実行前までのコード行で、SQL文の中の文字列を作り直す。 SQLの文字列を、切った、繋いだの問題だけ。慣れは必要だが。 (マクロの記録は質問者もやれば出るので略します。 ーー 参考 http://wiz2.blog16.fc2.com/blog-category-3.html#entry164 メニューに出ないときは

すると、全ての回答が全文表示されます。
  • pauNed
  • ベストアンサー率74% (129/173)
回答No.2

こんにちは。 ExcelにAccessのデータを取り込むなら一般操作だけでも可能です。 [外部データの取り込み] http://www.asahi-net.or.jp/~ef2o-inue/kihon/sub01_05_22.html この『「データベースクエリ」を使う方法』以下を参考にしてください。 OfficeやExcelのCD-ROMからMicrosoft Queryがインストールされている必要があります。 例はExcelファイルですが、パラメータの設定については以下を参考にしてください。 [41-1 外部データの取り込み(パラメータークエリの利用)] http://www11.plala.or.jp/koma_Excel/contents6/mame6041/mame604101.html 抽出条件をセルに入力すれば『セルの値が変わる時に自動的に更新する』ことも可能で、 マクロ不要です。 >素人なので構築方法がわかりません との事なので、まずはこの辺りから始めてみられたらいかがでしょう。

すると、全ての回答が全文表示されます。
noname#140971
noname#140971
回答No.1

注文履歴: ID__注文日_________お客様名____金額____注文内容 01__2007/11/11__鈴木 一郎__\1,000__商品A 02__2007/11/12__中村 主水__\2,000__商品B 03__2007/11/13__田中 五郎__\3,000__商品C [イミディエイト] ? DBSelect("SELECT * FROM 注文履歴",,vbcrlf) 1;2007/11/11;鈴木 一郎;1000;商品A; 2;2007/11/12;中村 主水;2000;商品B; 3;2007/11/13;田中 五郎;3000;商品C; ? DBSelect("SELECT * FROM 注文履歴 WHERE 注文日 BETWEEN #2007/11/12# AND #2007/11/13#",,vbcrlf) 2;2007/11/12;中村 主水;2000;商品B; 3;2007/11/13;田中 五郎;3000;商品C; 先ずは、このようにExcel のイミディエイトウインドウでAccessからのデータ取得に成功することかと。 <参照設定> レ Microsoft ActiveX Data Objects 2.8 Library と、参照設定に以上を追加する必要がありますが、ここはお判りのことと・・・。 そうなると、問題は、ADOを利用したデータの取得手順かと推察します。 それ自体は、さして難しいものではありません。 実際の手順は、以下のDBSelect関数を手掛かりにされて下さい。 ? DBSelect("SELECT * FROM 注文履歴 WHERE 注文日 BETWEEN #2007/11/12# AND #2007/11/13#","||","__") 2||2007/11/12||中村 主水||2000||商品B||__3||2007/11/13||田中 五郎||3000||商品C||__ DBSelect関数は、このように取得したデータは列区切り記号とレコード区切り記号とで連結して返します。 これをエクセルに表示するには Split関数でバラせば容易かと思います。 Option Explicit Const conConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\db1.mdb" Public Function DBSelect(ByVal strQuerySQL As String, _              Optional ByVal strSeparator1 As String = ";", _              Optional ByVal strSeparator2 As String = "") As String On Error GoTo Err_DBSelect   Dim I   As Integer   Dim J   As Integer   Dim R   As Integer   Dim C   As Integer   Dim M   As Integer   Dim N   As Integer   Dim rst  As ADODB.Recordset   Dim fld  As ADODB.Field   Dim Datas As String      Set rst = New ADODB.Recordset   ' =================   ' Begin With: rst   ' -----------------   With rst      .Open strQuerySQL, _         conConnection, _         adOpenStatic, _         adLockReadOnly      If Not .BOF Then       M = .RecordCount - 1       N = .Fields.Count - 1       .MoveFirst       For R = 0 To M         For C = 0 To N           Datas = Datas & .Fields(C) & strSeparator1         Next C         If Len(strSeparator2) Then           Datas = Datas & strSeparator2         End If         .MoveNext       Next R      End If   End With   ' ---------------   ' End With: rst   ' =============== Exit_DBSelect:   DBSelect = Datas & ""   Exit Function Err_DBSelect:   MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelect)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"   Resume Exit_DBSelect End Function

すると、全ての回答が全文表示されます。

関連するQ&A