一般的な説明を読んだ:MS AccessのOpenRedcordsetは、間違った文字列に
問題:OpenRecordset
が正しいクエリを読んでいません。私のクエリは、私のExcelファイルにエクスポートする必要があります。しかし、私のVBAは間違ったことを指しています。
私の推測では、qry.SQL = "SELECT * FROM [dbo_SO_SalesHistory]"
は十分な情報を提供していないと思いますか?
SQL
SELECT Sum(dbo_SO_SalesHistory.DollarsSold) AS SumOfDollarsSold
FROM dbo_SO_SalesHistory
WHERE (((dbo_SO_SalesHistory.InvoiceDate)
BETWEEN [Forms]![RUN]![textBeginOrderDate] AND [Forms]![RUN]![textendorderdate]));
VBA
Option Compare Database
Option Explicit
Public Function TRANS2()
Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook
Dim xlWS As Excel.Worksheet
Dim acRng As Variant
Dim xlRow As Integer
Dim db As DAO.Database
Dim qry As QueryDef
Dim rst As Recordset
Dim prm As DAO.Parameter
Dim strSQL As String
Set db = CurrentDb
Set xlApp = New Excel.Application
Set xlWB = xlApp.Workbooks.Open("C:\Users\J\Desktop\August 2017.xlsx")
Set xlWS = xlWB.Worksheets("Totals")
xlRow = (xlWS.Columns("K").End(xlDown).Row)
Set qry = db.QueryDefs("2_Total")
strSQL = strSQL & " [dbo_SO_SalesHistory].[InvoiceDate] Between #" _
& [Forms]![Run]![textBeginOrderDate] & "# And #" _
& [Forms]![Run]![textendorderdate] & "#"
qry.SQL = "SELECT * FROM [dbo_SO_SalesHistory]"
Set rst = db.OpenRecordset("2_Total", dbOpenDynaset)
Dim c As Integer
c = 11 'C is the one that stores column number, in which c=1 means column A, 11 is for column K, 12 for Column L
xlRow = xlRow + 11
Do Until rst.EOF
For Each acRng In rst.Fields
xlWS.Cells(xlRow, c).Formula = acRng
c = c + 1
Next acRng
xlRow = xlRow + 1
c = 1
rst.MoveNext
If xlRow > 25 Then GoTo rq_Exit
Loop
rq_Exit:
rst.Close
Set rst = Nothing
Set xlWS = Nothing
xlWB.Close acSaveYes
Set xlWB = Nothing
xlApp.Quit
Set xlApp = Nothing
Exit Function
End Function
あなたは非常に混乱しています:1.どこでも使用されていない文字列 'strSQL'でクエリを準備します。 2.どこでも使用されていないQueryDef 'qry'を定義します。 3. Excelファイルに出力する唯一のものは、最初の行と列を返す2_Totalクエリの結果を取得する '最初のレコードセットが含まれているため、表示されているExcelファイルとは関係ありません。 。すべてこれは私にとって謎です。 –
@ThomasG No.3は今問題があります。私の2_Totalクエリは単一の値を返します。これは私のExcelファイルにエクスポートしたいものです。しかし、それはExcelファイルに無関係な文字列を印刷しています。 –
@ThomasGこの問題に関するアドバイスは高く評価されます。私はVBAの初心者です。私のコードでいくつかの問題を指摘したことを感謝してください –