新建一个查询,根据查询条件把access数据批量导出Excel
Sub accessTOexcel()
Dim strsql As String
Dim qry As DAO.QueryDef
Set qry = CurrentDb.QueryDefs("导出查询")
Dim rst As New ADODB.Recordset
strsql = "Select DISTINCT 供应商 FROM 采购价格"
rst.Open strsql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rst.MoveFirst
Do Until rst.EOF
qry.Name = rst(0)
qry.SQL = "select 商品名称,供应商 from 采购价格 where 供应商='" & rst(0) & "'"
If Len(Dir(CurrentProject.Path & "\" & qry.Name & ".xls")) > 0 Then Kill CurrentProject.Path & "\" & qry.Name & ".xls"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, qry.Name, CurrentProject.Path & "\" & qry.Name & ".xls", True
rst.MoveNext
Loop
qry.Name = "导出查询"
End Sub
Sub 新建查询()
Dim SQL0 As String
SQL0 = "select * from 采购价格 where 1<>1"
If SQL0 <> "" Then
CreateQuery SQL0, "导出查询"
Application.RefreshDatabaseWindow
End If
End Sub
Private Sub CreateQuery(ByVal ssql As String, QueryName As String)
Dim Qdef As QueryDef
On Error Resume Next
If DCount("*", "MSysObjects", "Type=5 and Name='" & QueryName & "'") = 0 Then
Set Qdef = CurrentDb.CreateQueryDef(QueryName)
Else
Set Qdef = CurrentDb.QueryDefs(QueryName)
End If
Qdef.SQL = ssql
Qdef.Close
Set Qdef = Nothing
End Sub
Sub 删除查询()
On Error Resume Next
DoCmd.DeleteObject acQuery, "导出查询"
Application.RefreshDatabaseWindow
End Sub
Public Function QueryExists(strQueryName As String) As Boolean
Dim accQry As AccessObject
QueryExists = False
For Each accQry In CurrentData.AllQueries
If strQueryName = accQry.Name Then
QueryExists = True
Exit For
End If
Next accQry
End Function
附 件:
点击下载此附件
图 示: