使用 TransferSpreadsheet 导入 Excel 电子表格时出错

Posted

技术标签:

【中文标题】使用 TransferSpreadsheet 导入 Excel 电子表格时出错【英文标题】:Error using TransferSpreadsheet to import an Excel spreadsheet 【发布时间】:2014-12-16 03:09:59 【问题描述】:

我有一个例程可以帮助我在标准化工作表中找到一行单词。 根据单词的位置 - 例如,我在“A”列中搜索 它会在第 7 行找到单词。

我现在知道我可以使用范围 A8:M14 作为要导入表中的数据,因此我创建了一个函数 'GETBASELINE',它只返回该字符串 - “A8:M14”

所以现在我有一个名为 tbl_TEMP_Import 的表,其中包含这些字段

基线|10月|11月|12月|1月|2月|3月|4月|5月|6月|7月|8月|9月

我这样称呼它:

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_TEMP_Import", strPath, False, GetBASELINE(strPath, strSheet)

我收到错误 2391 字段“F1”在目标 tbl_TEMP_Import 中不存在

如果我将“有字段名称”更改为“真” 我收到错误 3270“找不到属性”

我希望我能得到更好的调试。完成这个似乎不太复杂。

【问题讨论】:

【参考方案1】:

对“有字段名称”回答“真”: 您还必须为表格提供字段标题...因此 GETBASELINE 的代码必须等于“A7:M8”...(我不确定 14 来自哪里)

A7:M7 是字段名称 A8:M8 是第一组值

对“有字段名称”回答“假”: 您必须更改字段名称,因为调用会引入临时字段名称,F1,F2 等 您可以手动更改名称。它也是可编程的。

无论如何,一旦您以一种方式调用脚本,请注意不要将它们“混合”在一起!在调用下一个之前删除一个

【讨论】:

谢谢马蒂。 'GETBASELINE' 只是提醒我,我在电子表格中寻找单词:“BASELINE”。我确实完全打算拉入单元格 A8:M14。如果可以的话,我的意图是提取字段名称,但这行不通,因为有些单元格是空白的。我的实现中缺少的是“工作表名称”,因此它需要 [SheetName]!A8:M14。这就是它出现“找不到属性”错误的原因。另外,正如您所说,我只是决定让 tbl_TEMP_Import 具有字段名称F1、F2、F3 等。但是当我选择“False”时,它知道该怎么做,这似乎很奇怪。

以上是关于使用 TransferSpreadsheet 导入 Excel 电子表格时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 vba TransferSpreadsheet 将 Aaccess 表与 Excel 链接

导入规范访问 vba

DoCmd.TransferSpreadsheet 问题

TransferText 导出到 CSV 不工作,但 TransferSpreadsheet 到 XLSX 工作

多个 TransferSpreadsheet 命令导致在打开时选择所有创建的工作表

从 excel 导入到具有更多字段的访问表 (vba)