Microsoft Access Club Access超初心者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトル抽出条件が入ったクエリのデータを特定のエクセルファイルに出力したい
記事No83092
投稿日: 2017/03/29(Wed) 13:11
投稿者あいりん
OS:Windows8
Access Version:2016

こんにちは。
いつもお世話になっております。

表題の件ですが、こちらのサイトやその他ネットで検索してやってみるのですが、
どうしてもわかりません。
どうかご教授をお願いします。


●やりたいこと
顧客データの中から指定した顧客の情報だけを特定のエクセルファイルに出力したい。
※指定する顧客は1社のみ。


●やってみたこと
1.フォーム【F顧客データ】からExcelに出力したい顧客を選択

2.1のフォームに設置した「Excelに出力」ボタンを押すと、フォーム【F顧客データ出力確認】が開き、
1で選択した顧客IDがフォーム【F顧客データ出力確認】の【テキストボックスA】に代入される

3.クエリ【Q顧客データ】を作成し、顧客IDの抽出条件に[Forms]![F顧客データ出力確認]![テキストボックスA]と入力して、1で選んだ顧客データのみ抽出

4.フォーム【F顧客データ出力確認】に設置した「Excel出力実行」ボタンを押すと、
特定のエクセル(顧客カルテ.xls)にクエリ【Q顧客データ】で抽出したデータを出力←これができない

Excelへの出力プログラムはサイトを参考(ほぼコピペですが・・)に下記のように設定しましたが、
「パラメータが少なすぎます。1を指定してください」とエラーがでます。

クエリの抽出条件をなくしてやってみるとExcelへの出力は問題なくされます。
抽出条件が入っていることでこのプログラムのどこかを修正する必要があると思うのですが、
知識がなさすぎてどこをどう修正すればいいかわかりません。。
どうかよろしくお願いします。
--------------------------------------------------------------------------

Option Compare Database

Function 顧客シートエクスポート()

On Error GoTo エラー

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim objEXE As Object
Dim strmsg As String
Dim intmsg As Integer

strmsg = "Ms Excelへデータを出力しますか ?"
intmsg = MsgBox(strmsg, 17, "管理者")

If intmsg = 1 Then

Set db = CurrentDb

'出力元クエリ名です。
Set rs = db.OpenRecordset("Q顧客データ")

'出力先のMs Excelを利用できるように設定します。
Set objEXE = Excel.Application

'Excelファイルのパスを指定します。
objEXE.Workbooks.Open ("C:\顧客管理データ保存\顧客カルテ.xls")

'Sheet名を指定します。
objEXE.Worksheets("Sheet1").Select

基点のセルを指定してデータを出力します。
objEXE.Cells(5, 2).CopyFromRecordset
objEXE.Quit

Set rs = Nothing
Set db = Nothing

Else

MsgBox "処理を中止しました", 1, "管理者"

End If

Exit Function

エラー:

MsgBox "Error番号:" & Err.Number & vbNewLine & _
"Error内容:" & Err.Description, 16, "管理者"
End

End Function

--------------------------------------------------------------------------

タイトルRe: 抽出条件が入ったクエリのデータを特定のエクセルファイルに出力したい
記事No83093
投稿日: 2017/03/29(Wed) 16:38
投稿者hatena
パラメータクエリをレコードセットとして開くときは、
QueryDef の Parameters にパラメータの値を設定してから、
開きます。


Dim db As DAO.Database
Dim qd As DAO.QueryDef
Dim rs As DAO.Recordset
 
Set db = CurrentDb

Set qd = db.QueryDefs("Q顧客データ")
qd.Parameters("[Forms]![F顧客データ出力確認]![テキストボックスA]") = [Forms]![F顧客データ出力確認]![テキストボックスA]
Set rs = qd.OpenRecordset


これでレコードセットは開きますので、
あとは、エクセルに CopyFromRecordset すればいいでしょう。

タイトルRe^2: 抽出条件が入ったクエリのデータを特定のエクセルファイルに出力したい
記事No83098
投稿日: 2017/03/31(Fri) 17:55
投稿者あいりん
hatena様

ご返信ありがとうございました。
ご報告が遅くなり申し訳ありません。
教えていただいたコードを使ってやってみたところ
無事にクエリのデータをエクセルに出力することができました!
本当にありがとうございます。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

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