Microsoft Access ClubAccessフォーラムの過去ログIndexページAccess超初心者対象ForumAccess初級者対象ForumAccess初・中級者対象ForumAccess VBA Tips ForumDAO、ADO、SQL Forum

     

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 が運営しています

cPanelとPLESKインストール済みのアダルトサイト対応レンタルサーバーをご提供しています。もちろん、海外大手のデータセンターにサーバー機器を収納します。
cPanelやPLESKをインストールしたレンタルサーバー。
アダルトサイトにも対応済み。
海外大手データセンターにサーバー機器を収納。

 

ページの先頭へ 前ページへ戻る