将Access交叉表查询链接并导入Excel

时间:2013-11-01 12:49:32

标签: excel ms-access excel-vba access-vba vba

我可以使用哪些代码将交叉表查询导入Excel并链接它?

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

我需要链接查询,因为会有其他信息要输入。例如。本月是11月,我需要将本月收到的数据输入系统。

5 个答案:

答案 0 :(得分:1)

而不是导入数据,在excel:

  1. 从文件菜单中选择数据
  2. 选择要从中提取数据的Access对象(表或查询)。
  3. 在Excel中加载数据
  4. 只要您想要更新数据,请右键单击数据并选择刷新,如果存在多个链接,请选择刷新全部。
  5. 这假设数据库每次刷新时都位于相同的物理位置,您已连接到此源。

    enter image description here

答案 1 :(得分:1)

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

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

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

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

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

  4. 转到“定义”标签,将“命令类型”更改为“#34; SQL"

  5. 输入SQL的基本位: SELECT YourCrossTabQueryName。* FROM YourCrossTabQueryName

  6. 点击确定。

  7. 这应该刷新表格并显示交叉表。

答案 2 :(得分: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的版本访问交叉表查询)。"

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

答案 3 :(得分: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

答案 4 :(得分:0)

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

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

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

从Excel执行通过查询从Access获取数据的步骤以及新的查询“My Non-Crosstab Crosstab”将可用于插入!