【问题标题】:Copying ADO recordset into excel worksheet将 ADO 记录集复制到 Excel 工作表中
【发布时间】:2014-07-11 14:21:06
【问题描述】:

我正在尝试打开一个 CSV 文件并对其进行查询,并将结果返回到“ThisWorkbook”的第二个工作表的 A 列。 我没有收到任何错误,所以我不明白为什么它没有将记录集复制到 excel 中。

Dim con As ADODB.Connection
Dim rs As ADODB.Recordset

Set con = New ADODB.Connection
Set rs = New ADODB.Recordset

Dim currentDataFilePath As String
Dim currentDataFileName As String

 Dim nextRow As Integer

currentDataFilePath = "C:\Users\M\folder\"
currentDataFileName = "csv-file"

con.Open "Provider=Microsoft.JET.OLEDB.4.0;" & _
           "Data Source=" & currentDataFilePath & ";" & _
           "Extended Properties=""text;HDR=NO;FMT=Delimited;IMEX=1"""


'rs.ActiveConnection = con

 rs.Open "SELECT Name FROM [" & currentDataFileName & ".csv] WHERE Datatype ='TYPE3'", 
 con

ThisWorkbook.Worksheets("Sheet2").Range("A:A").CopyFromRecordset rs
 rs.Close
con.Close

Set rs = Nothing
Set con = Nothing


End Sub

【问题讨论】:

  • 检查 rs.EOF 以确保您确实返回了任何记录。
  • 它工作正常 - 我刚刚输入错误我的查询:(

标签: vba excel ado


【解决方案1】:

你可以参考CopyFromRecordset()方法。

根据您上面的代码,在rs.Open 命令之后,您将添加如下内容:

ActiveWorksheet.Range("A1").CopyFromRecordset rs

在此处查看更多信息:http://msdn.microsoft.com/en-us/library/office/ff839240%28v=office.15%29.aspx

【讨论】:

  • 我的代码正在使用`ThisWorkbook.Worksheets("Sheet2").Range("A:A").CopyFromRecordset rs`
  • 对不起,我回答了另一个主题的问题!我的错。也许尝试在最后一个扩展属性之后添加分号:“Extended Properties=""text;HDR=NO;FMT=Delimited;IMEX=1"";"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多