VBA 打开记录集

问题描述 投票:0回答:1

我想做的就是使用 VBA 将某些查询的结果获取到 Excel 工作簿中。主要问题是 openRecordSet 方法似乎不起作用。每次当我尝试调试它时,我都会看到记录集(rcset)什么都没有。当我只是运行查询以便在 Access 查看器中查看它时,它似乎工作得很好(请参见最后一行代码)。运行代码时没有出现任何错误,因此我很难理解为什么我的记录集会返回 Nothing。我在互联网上搜索了很多,但没有发现任何人处于这种特殊情况。预先感谢您的任何帮助!

 Dim db As DAO.Database
  Dim qdef As DAO.QueryDef
  Dim rcset As DAO.Recordset
   Dim i As Integer


'Identify the database and query
Set db = CurrentDb
On Error Resume Next
  With db
    .QueryDefs.Delete ("RealQuery")
    Set qdef = .CreateQueryDef("RealQuery", strSQLRQ)
    .Close
End With

 'The problem child line
 Set rcset = qdef.OpenRecordset()

'Clear previous contents
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
With xlApp
  .Visible = True
  .Workbooks.Add
  .Sheets("Sheet1").Select
  'Copy the recordset to Excel
  .ActiveSheet.Range("A2").CopyFromRecordset rcset
'Add column heading names to spreadsheet
For i = 1 To rcset.Fields.Count
    xlApp.ActiveSheet.Cells(1, i).Value = MyRecordset.Fields(i - 1).Name
Next i
xlApp.Cells.EntireColumn.AutoFit
End With
qdef.Close
Set qdef = Nothing
Set db = Nothing
DoCmd.OpenQuery "RealQuery", acViewNormal
excel vba recordset
1个回答
1
投票
Option Explicit
    Public Const strQry = "insert sql select command here"
    Public Const conStr = "insertconnectionstringhere";
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset

Sub sql2excell()
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open (conStr)
rs.Open strQry, cn

If Not rs.EOF Then
ActiveSheet.Range("A1").CopyFromRecordset rs
End If

rs.Close
cn.Close
End Sub

我能得到的最简单的 SQL 到 excel vba

© www.soinside.com 2019 - 2024. All rights reserved.