No7785.ACCESSパラメータークエリで抽出したデータをエクセルに移行
| タイトル | : ACCESSパラメータークエリで抽出したデータをエクセルに移行 |
| 記事No | : 7785 |
| 投稿日 | : 2008/10/22(Wed) 09:30 |
| 投稿者 | : bote |
OS:xp Access Version:2002
ここへのカキコミでいいのかわかりませんが、ご指導いただきたいです。 ほぼ初心者が組んだコードですので、回りくどいやり方かもしれませんが、付き合って下さい。
現在、エクセルのシート上にコマンドボタンを配置して以下の処理をしています。 1.コマンドボタンを押すと、アクセスに接続し、年月を入力する条件入力用フォームを出す。 (これは、下記のコードには含まれていません。下記を実行する前に、別VBAで操作してます) 2.年月をキーに、パラメータークエリの実行(Access上のテーブルから抽出するクエリを実行。) 3.2.で作成したクエリからさらに抽出するクエリを複数実行(これはパラメーターではなく選択クエリ) 4.3.で作成した複数のクエリの実行結果をExcelに移行。
"Access_RecordSet2.Open SQL文2, Access接続2"→エラーメッセージ「1つ以上のパラメーターの値が設定されていません」
というエラーになります。
Workbooks.Open "\\Sn0206001\section\事業推進セクション\営業月次報告資料\営業データ管理システム\営業資料\営業資料.xls" 'C:\Documents and Settings\Kanno-Emu\デスクトップ\営業資料\営業資料.xls" Application.WindowState = xlMaximized Windows("営業資料.xls").Activate Sheets("個人表").Select Windows("営業資料.xls").Activate Range( _ "D9:Q28,D31:Q50,D60:Q79,D82:Q101,D111:Q130,D133:Q152,D213:Q232,D235:Q254,D264:J283,L264:Q283,D286:Q305" _ ).Select Selection.ClearContents Range("D2").Select '*********************************個人表登録********************** 'AccessのテーブルをExcelに貼り付ける。 '【宣言】 Dim Access接続2 As New ADODB.Connection Dim Access_RecordSet2 As New ADODB.Recordset Dim Access接続3 As New ADODB.Connection Dim Access_RecordSet3 As New ADODB.Recordset '【Accessに接続】Excelと同じフォルダ(ThisWorkbook.Path)の"データ.mdb"に接続 Access接続2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & ThisWorkbook.Path & "\データ.mdb" Access接続2.Open Access接続2.CursorLocation = adUseClient Access_RecordSet2.ActiveConnection = Access接続2 Access接続3.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & ThisWorkbook.Path & "\データ.mdb" Access接続3.Open Access接続3.CursorLocation = adUseClient Access_RecordSet3.ActiveConnection = Access接続3 '【SQL文】 Dim SQL文2 As String Dim SQL文3 As String SQL文2 = "select * from K_NA" SQL文3 = "select * from R_NA"
'SQL文2 = "select * from K_NA"の"K_NA"が複数の選択クエリになります。これじたいは、パラメーターではありません。 '【レコードセットオープン】 Access_RecordSet2.CursorType = adOpenStatic Access_RecordSet2.LockType = adLockReadOnly ' ReadOnly Access_RecordSet2.Open SQL文2, Access接続2
'この↑部分でエラーがでます。
Access_RecordSet3.CursorType = adOpenStatic Access_RecordSet3.LockType = adLockReadOnly ' ReadOnly Access_RecordSet3.Open SQL文3, Access接続3 '【レコードセットをシートに貼り付ける Windows("営業資料.xls").Activate Sheets("個人表").Range("D9").CopyFromRecordset Access_RecordSet2 Sheets("個人表").Range("L9").CopyFromRecordset Access_RecordSet3 '【Access接続を閉じる】 Access_RecordSet2.Close 'レコードセットのクローズ Access接続2.Close 'データベースのクローズ Access_RecordSet3.Close 'レコードセットのクローズ Access接続3.Close 'データベースのクローズ
' 【ファイルセーブ】 ActiveWorkbook.Save End sub
↑各クエリが20以上あるので、一部省いています。
|
| タイトル | : Re: ACCESSパラメータークエリで抽出したデータをエクセルに移行 |
| 記事No | : 7786 |
| 投稿日 | : 2008/10/22(Wed) 15:33 |
| 投稿者 | : Dr.天馬 |
> 3.2.で作成したクエリからさらに抽出するクエリを複数実行(これはパラメーターではなく選択クエリ) パラメータクエリを含むクエリはRecordsetオブジェクトのOpenメソッドでは開けません。 ADOのCommandオブジェクトのExecuteメソッドを使い、パラメータを渡す必要が有ります。
あるいは、パラメータクエリの抽出結果をワークテーブルなどに落とし込めば 普通にOpenメソッドで開けます。
|
| タイトル | : Re^2: ACCESSパラメータークエリで抽出したデータをエクセルに移行 |
| 記事No | : 7787 |
| 投稿日 | : 2008/10/23(Thu) 14:25 |
| 投稿者 | : bote |
ご返答ありがとうございます!!
> > 3.2.で作成したクエリからさらに抽出するクエリを複数実行(これはパラメーターではなく選択クエリ) > パラメータクエリを含むクエリはRecordsetオブジェクトのOpenメソッドでは開けません。
できないとは知りませんでした。
> ADOのCommandオブジェクトのExecuteメソッドを使い、パラメータを渡す必要が有ります。
↑やり方を調べながら、コードを組んでみましたが、ちんぷんかんぷんでできませんでした。
> あるいは、パラメータクエリの抽出結果をワークテーブルなどに落とし込めば > 普通にOpenメソッドで開けます。
ですが↑の方法で、自分のできる範囲内で全て組めましたので、解決しました。
本当にありがとうございました。 今回は、色々勉強になりました。
又、詰まったらご指導お願い致します。
|
このAccessフォーラム過去ログ集は、Microsoft Access Club が運営しています

|