Vba Access为什么更改doCmd.TransferSpreadsheet中的范围?

Vba Access为什么更改doCmd.TransferSpreadsheet中的范围?,vba,ms-access,import,Vba,Ms Access,Import,我正在尝试将同一Excel工作簿的不同副本中的不同范围自动导入Access 导致错误的相关代码行是: DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "ApplicationLevelSummary_In", "C:\Users\gfunk\Desktop\unserved2.xlsx", True, "'BPO Use Only'!A3:Z11" 错误是: DoCmd.Trans

我正在尝试将同一Excel工作簿的不同副本中的不同范围自动导入Access

导致错误的相关代码行是:

        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "ApplicationLevelSummary_In", "C:\Users\gfunk\Desktop\unserved2.xlsx", True, "'BPO Use Only'!A3:Z11"
错误是:

        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "ApplicationLevelSummary_In", "C:\Users\gfunk\Desktop\unserved2.xlsx", True, "'BPO Use Only'!A3:Z11"
Microsoft Access数据库引擎找不到对象“仅限BPO使用”$A3:Z11。确保对象存在,并且正确拼写其名称和路径名。如果“仅使用BPO”$A3:Z11不是本地对象,请检查网络连接或与服务器管理员联系

如您所见,它删除了工作表名称后的感叹号,并使用引号做了一些有趣的事情。这是怎么回事

我无法重命名工作簿中的工作表,因为它们已经分发给将要填写它们的人


谢谢

来自上的文档

一个字符串表达式,它是电子表格中有效的单元格区域或区域名称。此参数仅适用于导入。将此参数留空以导入整个电子表格。导出到电子表格时,必须将此参数留空。如果输入范围,导出将失败

如果你只是

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "ApplicationLevelSummary_In", "C:\Users\gfunk\Desktop\unserved2.xlsx", True
C:\Users\gfunk\Desktop\unserved2.xlsx
已经存在,然后它将被放入名为
ApplicationLevelSummary\u的新工作表的A1中


如果您需要数据进入特定范围,我建议使用COM自动化。它仍然很快,但它不是一条直线。

来自

一个字符串表达式,它是电子表格中有效的单元格区域或区域名称。此参数仅适用于导入。将此参数留空以导入整个电子表格。导出到电子表格时,必须将此参数留空。如果输入范围,导出将失败

如果你只是

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "ApplicationLevelSummary_In", "C:\Users\gfunk\Desktop\unserved2.xlsx", True
C:\Users\gfunk\Desktop\unserved2.xlsx
已经存在,然后它将被放入名为
ApplicationLevelSummary\u的新工作表的A1中


如果您需要数据进入特定范围,我建议使用COM自动化。它仍然很快,但不是一行。

结果是它不喜欢单引号或美元符号的范围。一旦我删除它们并将整个字符串作为一个扁平字符串传递,它就工作得很好。

结果表明,它不喜欢范围中的单引号或美元符号。一旦我移除它们并将整个字符串作为扁平字符串传递,它就工作得很好。

我想我已经找到了这个令人不安问题的答案。在我传递给DoCmd.TransferSpreadsheet例程的range:=参数的范围字符串中,Access将“!”字符替换为“$”时也存在同样的问题。最后,我尝试将工作表名称和地址范围分成两个不同的字符串,并用“!”将它们连接起来,如:

我成功地说服Access导入工作表和我想要的范围,而不是让它用“$”替换“!”


希望这能像对我一样帮助你。

我想我已经找到了这个令人不安问题的答案。在我传递给DoCmd.TransferSpreadsheet例程的range:=参数的范围字符串中,Access将“!”字符替换为“$”时也存在同样的问题。最后,我尝试将工作表名称和地址范围分成两个不同的字符串,并用“!”将它们连接起来,如:

我成功地说服Access导入工作表和我想要的范围,而不是让它用“$”替换“!”

希望这能像帮助我一样帮助你