Office中国论坛/Access中国论坛

标题: 如何用access从excel指定行开始导入? [打印本页]

作者: kenccc    时间: 2011-12-27 18:51
标题: 如何用access从excel指定行开始导入?
有很多个格式相同的excel表(样表见附件),想导入到access一张表中,由于excel表前两行是标题,如何实现只导入每张表中第三行以后的数据?
本想把excel表头逐个删掉再导入,但数量实在太多(有几百个,而且每周都要导入),希望高人指导,能否用程序实现?拜谢了!
[attach]47816[/attach]
作者: Henry D. Sy    时间: 2011-12-27 20:33
可以直接使用excel表,不用导入
  1. SELECT *
  2. FROM [Excel 8.0;HDR=Yes;IMEX=1;Database=D:\样表.XLS].[Sheet1$A2:C5];
复制代码

作者: Henry D. Sy    时间: 2011-12-27 20:48
也可以导入,也就是追加
假设目标表为A
  1. INSERT INTO A
  2. SELECT *
  3. FROM [Excel 8.0;HDR=Yes;IMEX=1;Database=D:\样表.XLS].[Sheet1$A2:C5];
复制代码

作者: kenccc    时间: 2011-12-27 22:23
感谢!
放到access中运行提示语法错误(代码全是红字),能否写得完整些,谢谢了!
作者: kenccc    时间: 2011-12-27 22:28
我是用窗体按钮的单击事件:
Private Sub Command0_Click()

INSERT INTO A
SELECT *
FROM [Excel 8.0;HDR=Yes;IMEX=1;Database=C:\Users\ken\Desktop\批量导入\样表.XLS].[Sheet1$A2:C5];

End Sub

作者: kenccc    时间: 2011-12-27 22:33
发现你提供的代码用于建立查询可以,但不知如何能写到vba代码里;
另外每个excel表不止3行数据(用$A2:C5只能导入3行),每个表的数据条数也不同,如何能完整导入?
作者: kenccc    时间: 2011-12-27 22:47
代码没有问题,是我弄错了,抱歉!
但第二个问题还是没有解决,即如何完整导入?
作者: zhuyiwen    时间: 2011-12-28 08:42
  1. INSERT INTO A
  2. SELECT *
  3. FROM [Excel 8.0;HDR=Yes;IMEX=1;Database=C:\Users\ken\Desktop\批量导入\样表.XLS].[Sheet1$A2:C5];
复制代码
这是SQL语句。

在VBA中SQL语句只是字符串,你要这这样执行SQL语句
  1. Private Sub Command0_Click()
  2. Dim sql AS String
  3. sql = _
  4. "INSERT INTO A " & _
  5. "SELECT * " & _
  6. "FROM [Excel 8.0;HDR=Yes;IMEX=1;Database=C:\Users\ken\Desktop\批量导入\样表.XLS].[Sheet1$A2:C5];"

  7. Docmd.RunSQL sql

  8. End Sub
复制代码

作者: Henry D. Sy    时间: 2011-12-28 09:17
kenccc 发表于 2011-12-27 22:47
代码没有问题,是我弄错了,抱歉!
但第二个问题还是没有解决,即如何完整导入?

INSERT INTO A

SELECT *

FROM [Excel 8.0;HDR=Yes;IMEX=1;Database=D:\样表.XLS].[Sheet1$A2:C5];

看到语句中红色部分了吗,这就是让你设置导入的范围
a2:c5是导入区域的对角线

作者: kenccc    时间: 2011-12-28 10:14
发现写成[Sheet1$A2:C],即不写对角线的行标,就可以导入全部内容了 ,谢谢版主!
以上方法实现了一张excel表的导入,如何用access的vba实现多张表的一次导入呢?
作者: ljp518    时间: 2011-12-28 10:35
学习!
作者: Henry D. Sy    时间: 2011-12-28 10:44
用循环
作者: roych    时间: 2011-12-28 13:18
kenccc 发表于 2011-12-28 10:14
发现写成[Sheet1$A2:C],即不写对角线的行标,就可以导入全部内容了 ,谢谢版主!
以上方法实现了一张exce ...

建议在Excel里用ADO写入好些。

作者: kenccc    时间: 2011-12-30 15:46
已解决,感谢各位大人!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3