首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MS Access,VBA -将Crosstable导出到Excel

问MS Access,VBA -将Crosstable导出到Excel
EN

Stack Overflow用户
提问于 2017-01-09 21:59:15
回答 2查看 279关注 0票数 0

目标

  1. 从现有表创建交叉表
  2. 通过VBA将格式化的交叉表导出到excel中

逼近

  1. 创建查询,该查询为表提取必要的数据。
  2. 创建可交叉查询,以正确格式化现有表中的数据
  3. 需要帮助!将交叉查询推至excel

发行

  1. 我在网上环顾了一下,它似乎很难导出一个交叉表,似乎大多数论坛都建议逐行迭代来导出交叉程序(这是非常令人惊讶的)。有什么方法可以利用一个方法(例如DoCmd.TransferSpreadsheet)来导出一个交叉库吗?

为什么这件事这么难,我很惊讶,为我的天真道歉。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-10 14:28:57

从我最初的帖子中跟进。看来您可以使用DoCmd.TransferSpreadsheet来导出一个交叉库。

我在下面定义了工作代码:

代码语言:javascript
复制
outputQuery = [your cross table query]
outputPath = [save-to file location]
outputFileName = [save-to file name]

DoCmd.TransferSpreadsheet acExport, SpreadsheetType:=acSpreadsheetTypeExcel12Xml, TableName:=outputQuery, FileName:=outputPath & outputfilename
票数 0
EN

Stack Overflow用户

发布于 2017-01-10 02:58:23

我只需在MS Access中创建我想要的查询。

然后,在excel中,我编写了一个宏,它运行查询并输出到工作表。下面是一个例子。

代码语言:javascript
复制
Dim cnString As String
Dim rs As New ADODB.Recordset

'Change connection string to an MS Access one
cnString = "Provider=xx;Server=xx,49168;Database=xx;"
rs.Open queryName, cnString, adOpenStatic, adLockOptimistic

'Output Headings
For i = 1 To rs.Fields.Count
        Sheets(PasteSheet).Range(pasteCell).Offset(0, i - 1) = rs.Fields(i - 1).Name
Next i

'Output data
Sheets(PasteSheet).Range(pasteCell).Offset(1, 0).CopyFromRecordset rs
rs.close

如果您想在MS Access中完成所有这些操作,那么修改起来就不需要太多了。您只需创建一个新的工作簿,然后执行与上述代码非常相似的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41557680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档