【问题标题】:Multiple TransferSpreadsheet commands results in all created sheets being selected when opened多个 TransferSpreadsheet 命令导致在打开时选择所有创建的工作表
【发布时间】:2021-09-23 11:41:52
【问题描述】:

有点难以用语言解释,但在这种情况下,代码和屏幕截图应该真的很有帮助。 我创建了这段简单的代码来重现这个问题。此代码是在 Access 2013 的 VBA 模块中创建的。

它用 4 张表格创建两个相等的 excel,一个是 acSpreadsheetTypeExcel9 / xls 格式,另一个是 acSpreadsheetTypeExcel12XML / xlsx。

Function TestExportExcel()

s = "\xxx\Desktop\temp\test.xls"

        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "tblPLCselect", s, , "sheet 1"
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "tblPLCselect", s, , "sheet 2"
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "tblPLCselect", s, , "sheet 3"
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "tblPLCselect", s, , "sheet 4"

s = "\xxx\Desktop\temp\test.xlsx"

        DoCmd.TransferSpreadsheet acExport, , "tblPLCselect", s, , "sheet 1"
        DoCmd.TransferSpreadsheet acExport, , "tblPLCselect", s, , "sheet 2"
        DoCmd.TransferSpreadsheet acExport, , "tblPLCselect", s, , "sheet 3"
        DoCmd.TransferSpreadsheet acExport, , "tblPLCselect", s, , "sheet 4"

End Function

这里的功能问题是在第二个 (xlsx) 导出中选择了所有工作表,这与 xls 版本相矛盾:

我希望用户打开工作表时只选择第一个工作表,但我也想以 acSpreadsheetTypeExcel12XML / xlsx 格式导出。

有没有一种有效的方式(这个导出必须经常运行)来操纵它?

【问题讨论】:

    标签: excel ms-access


    【解决方案1】:

    奇怪!是的,我得到同样的行为。我认为修复的唯一方法是使用 Excel 自动化。

    Dim objExcel As Object, wb As Object
    Set objExcel = CreateObject("Excel.Application")
    Set wb = objExcel.Workbooks.Open(s)
    wb.Worksheets("sheet_2").Activate
    wb.Worksheets("sheet_1").Activate
    wb.Save
    objExcel.Quit
    

    Excel 会将工作表名称中的空格替换为下划线字符。

    【讨论】:

    • 谢谢@june7。唯一的问题是我必须做大量的出口。您建议的解决方案意味着打开、保存和关闭每个 Excel。这不是很有效。但恐怕这是唯一的办法?
    • 是的,但代码会自动完成此操作,用户甚至不知道它正在发生。它很快。正如我所说,我没有看到任何其他方式。
    • 更正,我的简单的小 Excel 文件很快。包含大量数据的工作簿可能会降低性能。
    • 明天我将与基准进行比较,看看它的表现如何,谢谢!
    • 附言。我添加了 wb.Close SaveChanges:=True 以避免收到保存提示。
    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    相关资源
    最近更新 更多