Sub 查询() Dim RowN&, strAdd$, Sql$, i%, Temp$ Dim AdoCn, AdoRe Set AdoCn = CreateObject("ADODB.Connection") Set AdoRe = CreateObject("ADODB.Recordset") RowN = Sheet1.Range("B65536").End(xlUp).Row strAdd = Sheet1.Range("B6:F" & RowN).Address(0, 0) '创建连接 AdoCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & _ ";Extended Properties=Excel 8.0" '设定Sql For i = 6 To 7 If Len(Cells(i, 3)) > 0 Then Sql = Sql & Cells(i, 2) & "=""" & Cells(i, 3) & """ and " End If Next i If Len(Sql) > 0 Then Sql = Left(Sql, Len(Sql) - 5) Temp = " and " End If If Len(Cells(3, 3)) > 0 Then Sql = Sql & Temp & "报销人=""" & Cells(3, 3) & """" End If If Len(Sql) > 0 Then Temp = " and " If Len(Cells(4, 3)) > 0 Then Sql = Sql & Temp & "日期>=#" & Cells(4, 3) & "#" End If If Len(Sql) > 0 Then Temp = " and " If Len(Cells(5, 3)) > 0 Then Sql = Sql & Temp & "日期<=#" & Cells(5, 3) & "#" End If If Len(Sql) > 0 Then Temp = " where " Sql = "SELECT * FROM [数据库$" & strAdd & "]" & Temp & Sql '打开纪录集 AdoRe.Open Source:=Sql, ActiveConnection:=AdoCn '复制纪录集到单元格 Range("B10:G1000").ClearContents Range("B10").CopyFromRecordset AdoRe '关闭连接 AdoCn.Close Set AdoCn = Nothing Set AdoRe = Nothing End Sub