【问题标题】:Access 2013 accde file can't export to acFormatXLSXAccess 2013 accde 文件无法导出到 acFormatXLSX
【发布时间】:2015-08-06 23:20:12
【问题描述】:

我有一个 Access 2013 数据库,并将其保存为 accde 文件以提供给最终用户。我注意到报告打印预览不再有功能区上的导出按钮。我不确定为什么它们在 accdb 中,但在 accde 文件中消失了,并且无法使用 Google 找到任何内容来解释这一点,但我确实找到了很多文章说您必须为 Access 的运行时版本制作自己的功能区导出到 Excel。我没有使用运行时,但我制作了自己的功能区并且它有效,但仅适用于 .xls 文件格式。当我尝试将其保存到 .xlsx 时出现错误:

“运行时错误'2282':您尝试输出当前对象的格式不可用。”

我在网上发现了一些帖子说这有效,但没有详细信息,还有很多关于 Excel 导出不起作用的 Access 2007 错误/删除功能的帖子,但我使用的是 2013,所以不相关。

所以代码很简单:

DoCmd.OutputTo acOutputReport, "MyReport", acFormatXLSX, "File Name"

我也尝试过添加引用。我目前按此优先顺序有以下参考资料: 适用于应用程序的 Visual Basic Microsoft Access 15.0 对象库 OLE 自动化 Microsoft Office 15.0 Access 数据库引擎对象库 微软互联网控制 Microsoft Office 15.0 对象库 Microsoft Excel 15.0 对象库 Microsoft 数据访问组件安装版本

简短的问题是,是否可以使用 Access 2013 导出到 XSLX?如果是,我做错了什么?

感谢您一路阅读。

【问题讨论】:

    标签: ms-access vba ms-access-2013


    【解决方案1】:

    无法将报告导出到 Excel 2013。显然,由于导出报告的用户体验不佳,因此特别不包括在内。我可以想象跨越多个单元格等的标签可能会变得混乱。

    如果您要导出到 Excel,是否可以将查询导出到 Excel 中?还是直接导出为 PDF?

    您也可以使用模板excel文件,然后将数据导出到一个范围内。

    从此link on support.office.com 向下滚动到准备导出操作,查看With Formatting部分。

    有一个脚注 1. 选择目标工作簿和文件格式。请注意,报告只能以较旧的 *.xls 文件格式导出,而不能以较新的 *.xlsx 文件格式导出。

    【讨论】:

    • 感谢您的信息。您是否引用了 Microsoft 消息来源来说明这一点,以便我可以向我的老板展示使用 DoCmd.OutputTo 是不可能的?
    • Mrphin 经过一番搜索,终于找到了微软官方的东西并添加到我的原始答案中。如果您觉得相关,请标记为有用/答案。谢谢
    【解决方案2】:

    我通过 VBA 将其写入 excel,而不是使用导出功能。请参阅下面的当前项目示例。

    Private Sub cmdExcel_Click()
    DoCmd.Hourglass 1
       'Create a new workbook in Excel
       Dim i As Long
       Dim j As Integer
       Dim oExcel As Object
       Dim oBook As Object
       Dim oSheet As Object
       Dim tbl As Object
       Dim rng As Object
       Set oExcel = CreateObject("Excel.Application")
       Set oBook = oExcel.Workbooks.Add
       Set oSheet = oBook.Worksheets(1)
    
        i = 1
        j = 1
       'Transfer the data to Excel
        Do While i <= frmStockScreen.Form.fGrid.rows
            Do While j <= frmStockScreen.Form.fGrid.cols
                oSheet.cells(i, j).Value = frmStockScreen.Form.fGrid.TextMatrix(i - 1, j - 1)
                j = j + 1
            Loop
            j = 1
            i = i + 1
        Loop
    
        Set rng = oSheet.Range(oSheet.cells(1, 1), oSheet.cells(frmStockScreen.Form.fGrid.rows, frmStockScreen.Form.fGrid.cols))
        Set tbl = oSheet.ListObjects.Add(1, rng, , 1)
        tbl.TableStyle = "TableStyleLight9"
    
       oSheet.Columns(1).ColumnWidth = 10
       oSheet.Columns(2).ColumnWidth = 25
       oSheet.Columns(12).ColumnWidth = 40
    
       'Save the Workbook and Quit Excel
       oBook.SaveAs "V:\Database\Temp\StockDump" & GetNewLogin() & ".xlsx"
    
       oExcel.Quit
       Application.FollowHyperlink "V:\Database\Temp\StockDump" & GetNewLogin() & ".xlsx"
    DoCmd.Hourglass 0
    End Sub
    

    【讨论】:

    • Access 不喜欢 frmStockScreen,一直要求我定义变量,你在其他地方定义了吗?
    • frmStockScreen 是我项目中的一个表单,您需要修改我的示例以适合您的项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    相关资源
    最近更新 更多