Sql 查询Access数据库并将所有记录返回Excel

Sql 查询Access数据库并将所有记录返回Excel,sql,ms-access,excel,vba,Sql,Ms Access,Excel,Vba,我正在处理一个宏,用户通过该宏输入一个用于查询Access数据库的搜索词。我的问题是如何将这些记录以单独的行返回Excel 例如,数据库包含家庭地址信息。如果用户搜索邮政编码,所选记录将进入第1行、第2行、第3行等,查找查询中返回的家庭地址 下面是一些示例代码-我缺少的部分已清楚标记 谢谢你的帮助 Sub DatabaseQuery() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim stDB As String

我正在处理一个宏,用户通过该宏输入一个用于查询Access数据库的搜索词。我的问题是如何将这些记录以单独的行返回Excel

例如,数据库包含家庭地址信息。如果用户搜索邮政编码,所选记录将进入第1行、第2行、第3行等,查找查询中返回的家庭地址

下面是一些示例代码-我缺少的部分已清楚标记

谢谢你的帮助

Sub DatabaseQuery()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim stDB As String, stSQL As String, stProvider As String
Dim SearchTerm As String

stDB = "Data Source= C:\Database.accdb" ' Change accordingly
stProvider = "Microsoft.ACE.OLEDB.12.0"

With cn
    .ConnectionString = stDB
    .Provider = stProvider
    .Open
End With

SearchTerm = Range("A1").Value ' Change accordingly

stSQL = "SELECT Field1, Field2, Field3 " & _
    "FROM Table1 WHERE Field4= '" & SearchTerm & "'"

rs.Open stSQL, cn, adOpenStatic

' *** Put all the records in Sheet2! *** Help me! :)

cn.Close
Set rs = Nothing
Set cn = Nothing

End Sub

您需要告诉我们您正在使用哪个版本的Access,因为它会改变一些事情

还有,为什么还要提到连接字符串?我没看到你说你在使用VB.NET。我只看到MS Access和Excel-Office应用程序

当Access将某些内容导出到Excel时,它几乎会模仿与查看数据表中数据时相同的外观

如果您正在使用Access,请查看我编写的以下代码作为起点:

outputFileName = CurrentProject.Path & "\Reports\YourReportName.xlsx"
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "YourName", outputFileName, True

如果您使用的是不同的前端,您需要在问题中告诉我们。否则,我们该如何帮助你?凭猜测?这是一个不得到答案的好方法。

我知道有不止一种方法可以做到这一点。以下内容对我来说确实有用

Sub DatabaseQuery()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim stDB As String, stSQL As String, stProvider As String
Dim SearchTerm As String

stDB = "Data Source= C:\Database.accdb" ' Change accordingly
stProvider = "Microsoft.ACE.OLEDB.12.0"

With cn
    .ConnectionString = stDB
    .Provider = stProvider
    .Open
End With

SearchTerm = Range("A1").Value ' Change accordingly

stSQL = "SELECT Field1, Field2, Field3 " & _
    "FROM Table1 WHERE Field4= '" & SearchTerm & "'"

rs.Open stSQL, cn, adOpenStatic

Sheets("Sheet2").Range("A1").CopyFromRecordset rs

cn.Close
Set rs = Nothing
Set cn = Nothing

End Sub

我正在使用MS Excel 2010和MS Access 2010。上面的大部分代码我都是从其他帖子中采用的,所以效果很好。话虽如此,我坦率地承认我真的不明白这意味着什么/正在发生什么。您编写的代码当然很有用,但我需要将代码复制到同一工作簿中,而不是创建新报告。请检查以下内容:。。。它有大约3-4个不同的答案。所有这些都会对您有所帮助。这似乎可以完成工作
工作表(“Sheet2”).Range(“A1”).CopyFromRecordset rs
如果它适合您,我很高兴您找到了另一种解决方案!干杯