DoCmd.TransferSpreadsheet中的错误acExport?

时间:2016-05-10 19:18:05

标签: ms-access ms-access-2013

重现的步骤:

  1. 在Excel中打开一个空白工作簿
  2. 页面布局标签 - > [打印标题]按钮 - >要在顶部重复的行:$1:$1
  3. 保存(.xlsx格式)并关闭工作簿
  4. 打开MS Access
  5. 将任何表或查询导出到我们刚保存的工作簿:
  6. DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "TempQry", "C:\Book1.xlsx"

    1. 打开Book1.xlsx并单击Sheet1的打印预览
    2. 打印预览显示以下错误消息:“打印预览不可用。”
    3. 点击页面设置,然后切换到工作表标签:在顶部重复的行:为空白
    4. 为什么“打印预览”不可用,为什么“在顶部重复的行”框为空?

1 个答案:

答案 0 :(得分:1)

这似乎是Access中的一个错误。我不确定它为什么会发生,但我确实发现它是一个错误。

要进行校对,请重复上述步骤以重现。在第3步之后,右键单击Book1.xlsx并选择7-zip - >打开存档...(显然需要7-zip)。打开文件夹" xl"在存档内部,然后打开workbook.xml文件。

请注意xml文件中的以下文本:

<definedName name="_xlnm.Print_Titles" localSheetId="0">Sheet1!$1:$1</definedName>

现在关闭7-zip存档并继续上面的步骤。在第5步之后,通过7-zip重新打开Book1.xlsx - &gt;打开存档...打开xl \ workbook.xml并注意上面的文本已更改为:

<definedName name="_xlnm.Print_Titles" localSheetId="0">'Sheet1'!$A$1:$IV$1</definedName>

换句话说,MS Access做了一些努力......标准化......工作簿的定义名称。为此,它将列添加到仅行范围($1:$1 - &gt; $A$1:$IV$1)。

如果您将列设置为在左侧重复,则会发生同样的情况:($A:$A - &gt; $A$1:$A$1048576)。

有趣的是,如果您声明两行在顶部重复而列在左侧重复,则可以避免错误:

<definedName name="_xlnm.Print_Titles" localSheetId="0">Sheet1!$A:$A,Sheet1!$1:$1</definedName>

<强>解决方法:

  • 设置&#34;行重复在顶部&#34;和&#34;在左边重复的列&#34;或
  • 使用其他方法转移到Excel,例如CopyFromRecordset()