我是Access 2016 VBA的新手,我一直在将Excel数据导入Access表。
但问题是,我需要跳过Excel工作表的前三行,以便我可以直接将Excel数据保存到Access表中。我怎样才能做到这一点呢?
下面是用于将Excel数据导入到表中的代码:
DoCmd.TransferSpreadsheet acImport, , Tbl, SelectedFls, True
还有一件事是不可能指定Excel单元格的范围,因为它是变化的。
发布于 2019-06-23 16:27:02
MS Access对无序数据集进行操作,因此,您不能依赖查询返回的记录顺序,也不能依赖从外部源(如电子表格或文本文件)将数据导入到表中的顺序。
如果使用order by
子句严格定义了查询返回的记录的顺序,则只能依赖于这种顺序。
因此,如果您希望继续使用TransferSpreadsheet
方法执行任务,则需要确定一种识别要省略的记录的方法,该方法独立于导入记录的顺序。这样,您就可以将所有记录导入到表中,然后运行一个delete
查询,将记录标识逻辑实现为其选择标准。
我所能看到的实现这一点的唯一其他方法是使用ActiveX在MS Access中与Excel工作表交互,迭代工作表中的行,并填充记录集,同时省略遇到的前三行。
发布于 2019-06-24 18:59:03
如果您总是希望跳过前三行,您可以简单地将起始位置更改为DoCmd.TransferSpreadsheet acImport, , Tbl, SelectedFls, True, "A4"
,然后使用下面的代码接受所有输入,直到遇到空单元格。
DoCmd.TransferSpreadsheet acImport, , Tbl, SelectedFls, True, "A4"
'first line checks if this cell is empty or not
Do While xlc.Value <> ""
'takes the value of the current cell
WO_Num(lngColumn) = xlc.Offset(0, 0).Value
'shifts the selected cells one row downwards
Set xlc = xlc.Offset(1, 0)
lngColumn= lngColumn + 1
Loop
https://stackoverflow.com/questions/56724943
复制相似问题