【发布时间】:2013-11-01 12:49:32
【问题描述】:
如何将交叉表查询导入 Excel 并进行链接?
这些是我从交叉表查询中导入数据的步骤。
数据 >> 导入外部数据 >> 新建数据库查询 >> MS Access 数据源* >> 浏览到我的数据库 >> 选择交叉表查询名称 >> 选择数据。
我需要链接查询,因为会有额外的信息需要输入。例如。这个月是十一月,我需要把这个月收到的数据输入系统。
【问题讨论】:
如何将交叉表查询导入 Excel 并进行链接?
这些是我从交叉表查询中导入数据的步骤。
数据 >> 导入外部数据 >> 新建数据库查询 >> MS Access 数据源* >> 浏览到我的数据库 >> 选择交叉表查询名称 >> 选择数据。
我需要链接查询,因为会有额外的信息需要输入。例如。这个月是十一月,我需要把这个月收到的数据输入系统。
【问题讨论】:
您实际上可以使用 access 和 Excel“作弊”,通过将交叉表查询包装在非交叉表查询中,无需任何代码即可完成。
首先,在 Access 中创建一个新查询“我的非交叉表交叉表”,然后为查询源选择 Excel 拒绝查看的交叉表查询。使用 * 字段作为输出输出表中的所有列。
这个新查询现在将包含交叉表查询中的所有内容,但它本身并不是交叉表查询。
从 Excel 执行通过查询从 Access 获取数据的步骤,新查询“我的非交叉表交叉表”将可用于插入!
【讨论】:
由于某种原因,Excel 不会在您可以选择的表/查询列表中显示交叉表查询,但可以在没有 VBA 的情况下添加它,并且此后它将像普通表一样更新,您只需在连接属性中输入一些基本的 SQL。
说明适用于 Excel 2016,未在先前版本中测试。
在与交叉表查询相同的 Access 数据库中创建指向不同表或查询的数据链接(从通常的数据 -> 从 Access)。
单击新显示的表格中的任意位置,然后从“设计”选项卡中单击“属性”以打开“外部数据属性”对话框。
选择右侧“名称:”字段旁边的小按钮以打开连接属性。
转到“定义”选项卡并将命令类型更改为“SQL”
输入一段基本的 SQL: SELECT * FROM YourCrossTabQueryName
点击确定。
这应该会刷新表格并显示您的交叉表。
【讨论】:
不是导入数据,而是在excel中:
这假定数据库在每次刷新时都位于相同的物理位置,并且您已连接到此源。
【讨论】:
我发现如果后端数据库是 Access accdb 文件则不能
"这里应该注意,虽然目前无法从 Access 导入交叉表查询,但可以将支持交叉表的数据作为数据透视表导入(毕竟,数据透视表本质上是 Excel 版本的 Access 交叉表)查询)。”
您必须导入源数据,然后创建数据透视表
【讨论】:
但你可以用 VBA 做到这一点:
Function ImportCrosstab(TheDB As String, TheCrosstab As String, TheSpreadsheet As String)
'requires a reference to the Microsoft Office Access Database Engine 12.0 Object Library
'e.g.ImportCrosstab "C:\Databases\Newdatabase.accdb", "Q_stage_crosstab", "CompliancebyStage"
Dim db As Database
Dim qdf As QueryDef
Dim rs As Recordset
Dim ws As Worksheet
Dim strConnection As String
Dim j As Long
Dim xls As Object 'your Excel.Application with sheet activated
Set ws = ThisWorkbook.Worksheets(TheSpreadsheet)
Set db = OpenDatabase(TheDB)
Set qdf = db.QueryDefs(TheCrosstab)
Set rs = qdf.OpenRecordset
With ws
For j = 0 To rs.Fields.Count - 1
.Cells(1, j + 1).Value = rs.Fields(j).Name
Next
.Range("A2").CopyFromRecordset rs
End With
rs.Close
End Function
【讨论】: