多个 TransferSpreadsheet 命令导致所有创建的工作表在打开时被选中
Multiple TransferSpreadsheet commands results in all created sheets being selected when opened
有点难以用语言解释,但在这种情况下,代码和屏幕截图应该很有帮助。
我创建了这段简单的代码来重现这个问题。此代码是在 Access 2013 的 VBA 模块中创建的。
它用 4 sheets 创建了两个相等的 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) 导出中选择了所有 sheet,这与 xls 版本相矛盾:
我只想在用户打开 sheet 时选择第一个 sheet,但我还想以 acSpreadsheetTypeExcel12XML / xlsx 格式导出。
有没有一种有效的方法(此导出必须 运行 非常频繁)来操纵它?
奇怪!是的,我有同样的行为。我能看到的唯一解决方法是使用 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 将用下划线字符替换 sheet 名称中的 space。
有点难以用语言解释,但在这种情况下,代码和屏幕截图应该很有帮助。 我创建了这段简单的代码来重现这个问题。此代码是在 Access 2013 的 VBA 模块中创建的。
它用 4 sheets 创建了两个相等的 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) 导出中选择了所有 sheet,这与 xls 版本相矛盾:
我只想在用户打开 sheet 时选择第一个 sheet,但我还想以 acSpreadsheetTypeExcel12XML / xlsx 格式导出。
有没有一种有效的方法(此导出必须 运行 非常频繁)来操纵它?
奇怪!是的,我有同样的行为。我能看到的唯一解决方法是使用 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 将用下划线字符替换 sheet 名称中的 space。