AccessのVBAでパラメータを使用したクエリをExcelに書き出す方法とは?
- Access2000のVBAでパラメータを使用してクエリを作成し、結果をExcelに書き出す方法を知りたい。
- 他のサイトで見つけた情報では、VBAでパラメータを使用したクエリとExcelへの出力が別々に説明されており、組み合わせる方法がわからない。
- 具体的なソースコードのレベルでVBAでパラメータを使用したクエリをExcelに書き出す方法を教えていただけないでしょうか?
- ベストアンサー
AccessのVBAで、パラメータを使用したクエリ
お世話になります。 Access2000のVBAで質問させてください。 現在、下記の様な状況です。 ・「テーブルA」がある。 ・「テーブルA」の"番号"が"1"のものだけを抽出する「抽出」クエリを作成 ※クエリのデザインビューで"1"を指定するのでなく、 VBA上で、パラメータとして"1"を指定したい 1ではなく、2に変わる事もあるため、VBAで操作。 ・結果をExcelに書き出したい そこで、いろいろなサイトを見たのですが、 ・VBAでパラメータを使用したクエリを作成 ・Excelに書き出し の2つの内容が別々に記載されており、 私の力では、別々で作成はできるのですが、 ・VBAでパラメータを使用・設定したクエリをExcelに書き出し する事はできませんでした。 本当に勝手で申し訳ございませんが、 ・VBAでパラメータを使用・設定したクエリをExcelに書き出す ソースを頂けないでしょうか? 「××と○○を組合わせればよい」などの、一部を抽出したコメントは、 不要ですので、本当に申し訳ございませんが、 ソースレベルでご返信頂ければと思います。 ※一部を抽出したコメントは、ネットで見たのですが、結果、 目的を達成することはできませんでした。 お手数で申し訳ございませんが、なにとぞ宜しくお願い致します。 ※何度ひつこい・勝手ですみませんが、ソースレベルでの 回答のみお願いします。
- kgyqk433
- お礼率27% (220/805)
- Visual Basic
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
クエリ「Q2」の内容が以下になっていると仮定します。(「番号」は数値型 ) SELECT * FROM テーブルA WHERE 番号=[数字入力]; このクエリを開くと「数字入力」が表示され、入力すると抽出結果が表示されます。 以下を VBA で記述し実行してみます。 Public Sub testDAO() Dim rs As DAO.Recordset Dim i As Long With CurrentDb.QueryDefs("Q2") .Parameters("[数字入力]") = 1 Set rs = .OpenRecordset End With If (Not rs.EOF) Then With CreateObject("Excel.Application") .WorkBooks.Add With .Range("A1") For i = 0 To rs.Fields.Count - 1 .Offset(, i) = rs(i).Name Next .Offset(1).CopyFromRecordset rs End With .Visible = True End With End If rs.Close Set rs = Nothing End Sub Public Sub testADO() Dim rs As ADODB.Recordset Dim cat As New ADOX.Catalog Dim i As Long cat.ActiveConnection = CurrentProject.Connection With cat.Procedures("Q2").Command .Parameters("[数字入力]") = 1 Set rs = .Execute End With If (Not rs.EOF) Then With CreateObject("Excel.Application") .WorkBooks.Add With .Range("A1") For i = 0 To rs.Fields.Count - 1 .Offset(, i) = rs(i).Name Next .Offset(1).CopyFromRecordset rs End With .Visible = True End With End If rs.Close Set rs = Nothing End Sub 前者がDAO、後者がADO 直接 Excel を起動し、新規 Book に抽出結果を転記して表示するまでです。 後は、 .Parameters("[数字入力]") = 1 部分の値を、関数のパラメータにして受け渡しするとか・・・ フォームに入力した値を参照する様にするとか・・・・ ※ .Offset(1).CopyFromRecordset rs でデータを転記してますが、 書式がチョッと・・・ってな場合には、 先に書式を設定してから CopyFromRecordset してみたりします。 ※ DoCmd.TransferSpreadsheet を使いたい場合は、 「数字入力」部分をフォームで作成しておいて、 クエリではそのフォームを参照するようにします。(未検証) 参考にする/しないは、自己責任にてお願いします。
関連するQ&A
- Accessのパラメータクエリについて
Accessのパラメータクエリがうまく動かなくて困ってます。 実はODBC経由でリンクテーブルを作っておりまして、そこからパラメータクエリで抽出を試みたのですが、パラメータは聞いてきますが抽出できません。 選択クエリ状態で直接抽出条件を入れてやれば何の問題もなく通常のテーブルと同様に抽出できるのですが、パラメータクエリにする、または同じ事ですが他のフォームのコントロールを参照させる状態ですと、エラーも出ずにノンデータとなります。 これって何故なんでしょうか?対処方法はありますか? ちなみにリンク元のテーブルはオラクルですがデータ型とかが関係あるのでしょうか?
- 締切済み
- その他(データベース)
- Accessのパラメータークエリについて教えてください。
よろしくお願いします。 Accessのパラメータークエリについて教えていただきたいのですが、 例えば、商品名 と 担当者 と言うフィールドがあって、クエリを使用し[商品名を入力してください。][担当者を入力してください。]というパラメータクエリを作成しました。 そして、商品名のダイアログが出てきたときに「鉛筆」 担当者のダイアログが出てきたときに「遠藤」と入力すると思い通り物ものが出来るのですが、同じパラメータクエリを使用して、「遠藤」だけを抽出しようと思うと何も抽出されません。(たぶん「遠藤」と「空白」の抽出になっているのだと思うのですが・・・) ひつのクエリを使用して、2つでの条件と1つだけの条件で抽出することは出来ないでしょうか?よろしくお願いします。 Accessは2000or2002です。
- ベストアンサー
- オフィス系ソフト
- AccessのVBAでパラメータクエリー設定
お世話になります。 AccessのVBAで質問させてください。 「クエリーA」に設定している「ID1」のパラメータを 「テーブルA」の「IDX」の値を設定したいと思っております。 「ID1」にパラメータ2を設定する方法は分かったのですが、 下記の2つの方法がわかりませんでした。 ・「ID1」のパラメータを「テーブルA」の「IDX」の値を設定する方法 ・「テーブルA」は複数レコードあるので、その数だけfor文的なループで回したい お手数で申し訳ございませんが、 「クエリーA」に設定している「ID1」のパラメータを 「テーブルA」の「IDX」の値を設定する方法VBAコードを 教えて頂ければと思います。 本当に勝手いいますが、コードを記載して頂ければと思います。 宜しくお願い致します。 -----「ID1」にパラメータ2を設定する方法----- Set qdf = dbs.QueryDefs("クエリーA") With qdf .Parameters("ID") = 2 Set rst = .OpenRecordset End With
- ベストアンサー
- Visual Basic
- アクセス97のVBAでパラメータを指定する方法
いつもたいへんお世話になっております。 アクセス97で、フォームを複数作りました。フォーム1、フォーム2、フォーム3。 それぞれのフォームのコマンドボタンでフォーム4を呼び出します。 フォーム4のレコードソースにクエリを使用しますが(クエリ1)、 このクエリにの抽出条件に、最初のフォームのコントロールの値(部門)を設定したいのですが、抽出条件に、「FORMS!フォーム1!部門」とすると、同じクエリを他のフォームには使えませんよね?パラメータを作成して、それぞれのフォームのコマンドボタンのなかで指定できてしまえば、クエリ1と、フォーム4を共有できますよね。現在は、それぞれのフォームに対応するフォーム4とクエリ1を作成しています。なんとかなりませんか? 説明が難しくなってきちゃった・・・ ・・・パラメータの入力要求をVBAで処理したいのですが、いい方法を教えてください。
- ベストアンサー
- オフィス系ソフト
- アクセス2000VBA ADO パラメータクエリについて
アクセス2000VBA ADO パラメータクエリについて フォーム1で得たデータをモジュールで定義した[hensu](String)に代入して、クエリ1(選択クエリ)の抽出条件として[hensu]を使用して、それによって得たデータをフォーム1で使用したいです。 フォーム1で[hensu]をパラメータクエリ?として定義するような文章(プログラム)が必要なだと思いますが、その例文(プログラム)を教えてください。 シロウト用に分かりやすくお願いします。
- ベストアンサー
- オフィス系ソフト
- Access のパラメータクエリについて
お世話になります。 Accessでクエリを作成する練習をしています。 住所フィールドを含むクエリを基にして、住所フィールドにパラメータを設定するクエリを作成しています。 住所フィールドには、東京都で始まる住所、千葉県で始まる住所そして埼玉県で始まる住所が多数入力されています。 「パラメータの入力」ダイアログボックスに、ワイルドカードを使用して“東京都*”と入力して、クエリを実行すると1件も抽出できません。 パラメータには、ワイルドカードを使用できないのでしょうか。 または、他に理由があるのでしょうか。 よろしくお願いします。 OS: Windows 7 Office:2010
- ベストアンサー
- その他MS Office製品
- Access 2003、2007 なぜクロス集計クエリだけクエリパラメータを設定しないといけないのか?
Accessで、なぜクロス集計クエリだけクエリパラメータを設定しないといけないのでしょうか? 普通の選択クエリなどでパラメータクエリを作る時は抽出条件に[ ]を記入するだけで作成できますが、クロス集計クエリでパラメータクエリを作ろうとすれば、クエリパラメータでダイアログボックスの文字列とデータ型を指定しなければいけません。 これはなぜなのでしょうか?
- 締切済み
- オフィス系ソフト
- クエリのパラメータ
お世話になります。 ASP.netの勉強中です。 クエリのパラメータに関して、わからないことがあり、質問させて頂きます。 SqlDataSourceのクエリでパラメータを指定する場合は"@"を指定すればよいと 言うことを調べたのですが、@を指定してクエリを作成したところパラメータとは 認識されず、文字列となり、パラメータの定義の画面が表示されません。 (クエリは以下のようになります。) SELECT 形状マスタ.* FROM 形状マスタ WHERE ([コード] = @CD) "@CD"を"?"にすると、パラメータの定義画面が表示され、実行した場合も パラメータとして認識されています。 出来れば"@"でパラメータを指定したいので、教えて頂ければ幸いです。 初歩的な質問で申し訳ありませんが、よろしくお願い致します。
- ベストアンサー
- Microsoft ASP
- Accessのパラメータクエリを他のクエリから呼ぶ
VBAで日付を指定してSelectするクエリなのですが、同じ処理をたくさんつくるのが嫌なので、 パラメータクエリにしたいのですが、、、 例えば、 日別売上クエリ: Parameters pDate datetime; を持つ (VBAから直接呼ぶのはこれだけ) このクエリは、以下の2つのJoinからなる 日別レジ別売上クエリ: 下位クエリで、Parameters pDate datetime; を持つ (客数を得るクエリ) 日別部門別売上クエリ: 下位クエリで、Parameters pDate datetime; を持つ (金額を得るクエリ) 共に、Where を日付=pDateとしてます。 そうしておいて、VBAから set rs1=DB1.Openrecordset(”Select 、、、、From 日別売上クエリ(#” & strDate & ”#) ”) とやったのですが、ダメでした。 パラメータクエリを他のクエリから呼ぶ構文をお教え下さい。 尚、「パラメータクエリをクエリから呼」や「パラメータクエリをSQLから呼」でGoogleったのですが、 見つかりませんでした。
- ベストアンサー
- その他(データベース)
- Access ADO パラメータークエリー
Access ADOでフォームのコントロールを参照するパラメータークエリーを開こうとすると、どうしても「SQLステートメントが正しくありません・・・」のエラーが発生してしまいます。 もちろん、クエリー単体では正常に動作しますが、クエリーのパラメーターに参照するコントロールを登録してもADOでは開けません。 現在はパラメータークエリーの抽出結果を一時テーブルに書き込んで、これをADOで開くという非効率極まりない方法で凌いでいますが、どうすれば良いのでしょうか。
- ベストアンサー
- その他(データベース)