【发布时间】:2018-03-28 03:24:52
【问题描述】:
我在尝试将查询从 Access 导入 Excel 时遇到了一些问题。
几天前,我编写了一个代码(在 Google 的帮助下哈哈)将表格从 Access 导入 Excel:
Sub importQuery(DBFullName As String, data_sht As Worksheet)
Dim cn As Object, rs As Object
Dim i As Integer
Dim TargetRange As Range
Dim rows As Long, cols As Long
Dim dataEmpty As Boolean
Dim lastColString As String
data_sht.Activate
Application.ScreenUpdating = False
Set TargetRange = data_sht.Range("A1")
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Ace.OLEDB.12.0; Data Source=" & DBFullName & ";" 'the Access file is .accdb
Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM C_Paso2_SM_Cuplas", cn, , , adCmdUnspecified
cols = rs.Fields.Count
rows = data_sht.Range("A" & data_sht.rows.Count).End(xlUp).Row
' Copy titles of the Access Query
For i = 0 To (cols - 1)
TargetRange.Offset(0, i).Value = rs.Fields(i).Name
Next
' Copy data
TargetRange.Offset(1, 0).CopyFromRecordset rs
End Sub
该代码有效,但当我这样做时:
rs.Open "SELECT * FROM C_Paso2_SM_Cuplas", cn, , , adCmdUnspecified
我正在从同一个文件中导入另一个名为 C_Paso1_SM_Cuplas 的查询。我能做些什么?为什么我说 C_Paso2_SM_Cuplas 时要导入 C_Paso1_SM_Cuplas?是否有其他可能将 Access Query 导入 Excel?
【问题讨论】:
-
我不太确定你在问什么。您发布的有问题的查询与您的代码中的查询完全相同。有什么问题?你遇到了什么错误?
-
我正在尝试导入 C_Paso2_SM_Cuplas 但代码导入了 C_Paso1_SM_Cuplas!看到区别:我需要 Paso2,它导入 Paso1。当我导入表而不是查询时,它工作正常
-
C_Paso2_SM_Cuplas有记录吗?在End Sub之前添加rs.Close、Set rs = Nothing、cn.Close和Set cn = Nothing。 -
不,只有一个 C_Paso2_SM_Cuplas。但是data_sht中粘贴的数据是来自C_Paso1_SM_Cuplas的数据
-
你的代码可以显示
C_Paso2_SM_Cuplas的标题吗?
标签: excel ms-access excel-formula vba