実現したいこと
抽出条件のある選択クエリをVBAでレコードセットしたい
前提
フォーム上でレコードを出力する期間を入力し、出力ボタンを押すとExcelにエクスポートするフォームを作成しています。
問題解決にあたって足りない情報があればご教示ください。
発生している問題・エラーメッセージ
レコードセットするクエリに抽出条件を設けていない場合は正常に出力が行われたのですが、クエリに"年月"フィールドと抽出条件(Between [Forms]![F6_1出力]![集計開始年月] And [Forms]![F6_1出力]![集計終了年月])を加えたところ、実行時エラー'3061' パラメーターが少なすぎます。2を指定してください。とエラーが発生するようになりました。
抽出条件を入力するフォームは開いた状態で実行を試しています。
該当のソースコード
Private Sub 出力_Click()
Dim dbs As Database Dim rst As Recordset Dim intRow As Integer Dim intCell As Integer Dim xls As Object Set dbs = CurrentDb Set rst = dbs.OpenRecordset("Q_レコードセットしたいクエリ") Set xls = CreateObject("Excel.Application") With xls .ScreenUpdating = False .workbooks.Open "フルパス¥実績.xlsx" intRow = 5 For intCell = 2 To 5 .Cells(intRow, intCell).Value = rst.Fields(intCell - 2).Name Next intCell .Range("B6").CopyFromRecordset rst Dim data As Variant data = .Range("B5").CurrentRegion.Value data = .worksheetfunction.transpose(data) .Range("B5").CurrentRegion.ClearContents .Range("B5").Resize(UBound(data, 1), UBound(data, 2)).Value = data .Cells.Select .Cells.EntireColumn.AutoFit .Range("A1").Select .ScreenUpdating = True .Visible = True End With Set xls = Nothing
End Sub
試したこと
https://asbepartners.com/parameter/
こちらのサイトを参考に、パラメータークエリやクロス集計クエリをVBAで実行しようとすると起こるエラーであることが分かりました。
また、同サイトの解決法を参考に
Dim dbs As Database Dim qdf As QueryDef Dim rst As Recordset Dim intRow As Integer Dim intCell As Integer Dim xls As Object Set dbs = CurrentDb Set qdf = ("Q_レコードセットしたいクエリ") With qdf .Parameters("Between [Forms]![F6_1出力]![集計開始年月] And [Forms]![F6_1出力]![集計終了年月]")=Between Forms![F6_1出力]![集計開始年月] And Forms![F6_1出力]![集計終了年月] Set rst = .OpenRecordset End With
'後略
このように記述してみましたが、.parametersの行が構文エラーとなり、実行できませんでした。
補足情報(FW/ツールのバージョンなど)
Microsoft Access2019
回答1件
あなたの回答
tips
プレビュー