MS Access,VBA - 将Crosstable导出到Excel

时间:2017-01-09 21:59:15

标签: vba excel-vba ms-access excel

目的

  1. 从现有表创建crosstable
  2. 通过VBA将格式化的crosstable导出到excel
  3. APPROACH

    1. 创建了为表格
    2. 提取必要数据的查询
    3. 创建了一个crosstable查询,以正确格式化现有表格中的数据
    4. !帮助需要!推送crosstable查询到excel
    5. 问题

      1. 我在网上看了一下,看起来很难输出crosstable到excel - 似乎大多数论坛都建议逐行迭代导出crosstable(这是非常令人惊讶的)。有什么方法可以利用一种方法(例如DoCmd.TransferSpreadsheet)来导出一个交叉的?
      2. 为什么这么难让我感到惊讶,为天真的道歉

2 个答案:

答案 0 :(得分:0)

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

然后在excel中我有一个我编写的宏来运行查询并输出到工作表。见下面的例子。

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中完成所有这些操作,那么修改它不需要太多。您只需要创建一个新工作簿,然后对上面的代码执行非常类似的操作。

答案 1 :(得分:0)

从我原来的帖子中跟进。 您似乎可以使用DoCmd.TransferSpreadsheet导出交叉稳定。

我已经定义了下面的工作代码:

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