1

如何将交叉表查询导入 Excel 并链接它?

这些是我从交叉表查询中导入数据的步骤。
数据 >> 导入外部数据 >> 新数据库查询 >> MS Access 数据源* >> 浏览到我的数据库 >> 选择交叉表查询名称 >> 选择数据。

我需要链接查询,因为会有额外的信息需要输入。例如这个月是十一月,我需要将这个月收到的数据输入到系统中。

4

5 回答 5

2

您实际上可以使用 access 和 Excel“作弊”,并通过将交叉表查询包装在非交叉表查询中来完成它而无需任何代码。

首先,在 Access 中创建一个新查询“我的非交叉表交叉表”,并为查询源选择 Excel 拒绝查看的交叉表查询。使用 * 字段作为输出输出表中的所有列。

这个新查询现在将包含交叉表查询中的所有内容,但它本身并不是交叉表查询。

从 Excel 执行通过查询从 Access 获取数据的步骤,新查询“我的非交叉表交叉表”将可用于插入!

于 2018-06-07T19:21:05.483 回答
2

出于某种原因,Excel 不会在您可以选择的表/查询列表中显示交叉表查询,但可以在没有 VBA 的情况下添加它,此后它将像普通表一样更新,您只需输入连接属性中的一些基本 SQL。

说明适用于 Excel 2016,未在先前版本中测试。

  1. 在与您的交叉表查询相同的 Access 数据库中创建指向不同表或查询的数据链接(从通常的数据 -> 从 Access)。

  2. 单击新显示的表中的任意位置,然后从“设计”选项卡中单击“属性”以打开“外部数据属性”对话框。

  3. 选择右侧“名称:”字段旁边的小按钮以打开连接属性。

  4. 转到定义选项卡并将命令类型更改为“SQL”

  5. 输入一段基本的 SQL:SELECT * FROM YourCrossTabQueryName

  6. 打好。

这应该会刷新表格并显示您的交叉表。

于 2018-02-22T16:49:04.963 回答
1

而不是导入数据,在 excel 中:

  1. 从文件菜单中选择数据
  2. 选择从要从中提取数据的 Access 对象(表或查询)。
  3. excel中的数据加载
  4. 每当您想要更新数据时,右键单击数据并选择刷新或如果存在多个链接则选择全部刷新。

这假设数据库在每次刷新时都位于相同的物理位置,并且您已连接到此源。

在此处输入图像描述

于 2013-11-01T12:58:53.487 回答
0

如果后端数据库是 Access accdb 文件,我发现你不能

https://excelandaccess.wordpress.com/2013/07/26/how-to-import-access-data-to-excel-using-the-get-external-data-from-access-option/

“您应该在此处注意,虽然您目前无法从 Access 导入交叉表查询,但您可以将支持交叉表的数据作为数据透视表报表导入(毕竟,数据透视表本质上是 Excel 版本的 Access 交叉表查询)。 "

您必须导入源数据,然后创建数据透视表

于 2015-02-06T05:35:55.577 回答
0

但是你可以用 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
于 2015-03-06T02:07:46.060 回答