1
我有一個前端數據庫設置,供用戶提取關於他們上傳的信息列表的數據。導出功能正常工作,除非他們希望結果轉到打開的工作簿中,而不保存數據而添加數據表。問題是,當我在宏未運行之前或之後運行查詢時,創建的查詢具有數據。但是,當宏運行時,查詢不會返回任何內容。下面是我使用的最新VBA。請檢閱並告知我錯過了什麼。 謝謝訪問VBA:記錄集應該不是空的
微軟Office - 訪問:2010
有效參考庫:
- Visual Basic應用程序
- 的Microsoft Access 14.0對象庫
- OLE自動化
- Microsoft Excel中14.0對象庫
- Microsoft Office 個
- 14.0 Access數據庫引擎對象庫
宏:
Private Sub ExpFile_Click()
Dim sql2export, s As String, blnExcel, blnWhere As Boolean, qdf As QueryDef, xlApp As Object, ws As Excel.Worksheet
Dim MyDatabase As DAO.Database, MyQueryDef As DAO.QueryDef, MyRecordset As DAO.Recordset
blnWhere = False
If Me. QueryASubform.Visible = True Then 'exceptions
sql2export = "QueryA"
blnWhere = True
ElseIf Me. QueryBSubform.Visible.Visible = True Then 'no Program Group for Build ID
sql2export = " QueryB"
ElseIf Me. QueryCSubform.Visible = True Then 'Bill to and Type report.
sql2export = " QueryC"
Else: Exit Sub
End If
If blnWhere = False Then
s = "select * from " & sql2export & " Where (((" & sql2export & ". GPID)=[Forms]![frmFEFindQA]![GPID]));"
Else: s = "select * from " & sql2export
End If
On Error Resume Next
CurrentDb.QueryDefs.Delete "xlsExport"
Set qdf = CurrentDb.CreateQueryDef("xlsExport", s)
Set xlApp = GetObject(, "excel.application")
If (Err.Number = 0) Then
Set xlApp = GetObject("Excel.Application")
xlApp.Visible = True
Set ws = xlApp.Sheets.Add
Set MyDatabase = CurrentDb
MyDatabase.QueryDefs.Delete ("xlsExport")
Set MyQueryDef = MyDatabase.CreateQueryDef("xlsExport", s)
Set MyRecordset = MyDatabase.OpenRecordset("xlsExport") ‘<------ empty
With xlApp
.ws.Select
.ActiveSheet.Range("a2").CopyFromRecordset MyRecordset
For i = 1 To MyRecordset.Fields.Count
xlApp.ActiveSheet.Cells(1, i).Value = MyRecordset.Fields(i - 1).Name
Next i
xlApp.Cells.EntireColumn.AutoFit
End With
Else:
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "xlsExport", "C:\Users\" & Environ("USERNAME") & "\Documents\VehInfoExp", True
xlApp.Workbooks.Open "C:\Users\" & Environ("USERNAME") & "\Documents\InfoExp.xls", True, False
End If
Err.Clear
On Error GoTo 0
Set xlApp = Nothing
End Sub