【问题标题】:MS Access, VBA - Export Crosstable to ExcelMS Access, VBA - 将交叉表导出到 Excel
【发布时间】:2017-01-10 22:28:57
【问题描述】:

目标

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

方法

  1. 创建的查询提取了表的必要数据
  2. 创建了一个交叉表查询以正确格式化现有表中的数据
  3. !需要帮助!将交叉表查询推送到 excel

问题

  1. 我在网上四处查看,似乎将交叉表导出到 Excel 很困难 - 似乎大多数论坛都建议逐行迭代以导出交叉表(这非常令人惊讶)。有什么方法可以利用方法(例如DoCmd.TransferSpreadsheet)来导出交叉表?

为什么这么难让我吃惊,为幼稚道歉

【问题讨论】:

  • 对如何创建数据透视查询进行一些研究,将其保存,然后您可以使用传输电子表格将其导出。如果你想使用 vba,你可以在导出后通过 vba 进一步修改它...
  • 你尝试了什么?您收到什么错误或不希望的结果?我们重现问题的数据是什么样的?

标签: vba excel ms-access


【解决方案1】:

我只是在 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 中完成所有这些操作,则无需进行太多修改。您只需要创建一个新工作簿,然后执行与上述代码非常相似的操作即可。

【讨论】:

    【解决方案2】:

    从我原来的帖子跟进。 您似乎可以使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 2016-10-11
      相关资源
      最近更新 更多