Office中国论坛/Access中国论坛
标题:
doCmd执行select into时的问题
[打印本页]
作者:
foreseer201
时间:
2009-4-14 18:53
标题:
doCmd执行select into时的问题
有多个Excel中的数据需要导入到Access,每个表可能有多个Sheet要导入。中间遇到2个问题需要请教各位大侠。
第思路是在VBA中遍历每个Excel,获取每个文件的路径和每个Sheet的那么之后,用下面的语句数据。
SQL = "select * into " & shtName & " from [Excel 8.0;Database=" & filePath & "].[" & shtName & "$]"
DoCmd.RunSQL SQL
第一个问题就是在每执行一次时都有下面的提示框,确定后才可以导入。这样就不能自动了。不知有没有办法可以不让弹出这个提示。
第二个问题很奇怪,本来像下面写死的语句这样执行导入是很快的。
但是要自动循环,所以就要用String变量代替sql中的Excel路径和sheet名(上面的那句),执行起来就慢了很多。不知道有没有高人遇到过这样的问题请解决过。望赐教,非常感谢。
sql = "select * into Sheet1 from [Excel 8.0;Database=D:\Test.xls].[Sheet1$]"
DoCmd.RunSQL SQL
作者:
andymark
时间:
2009-4-14 20:42
DoCmd.SetWarnings False
sql = "select * into Sheet1 from [Excel 8.0;Database=D:\Test.xls].[Sheet1$]"
DoCmd.RunSQL SQL
完成后再改回来
DoCmd.SetWarnings True
作者:
andymark
时间:
2009-4-14 20:44
直接用 Execute 代替RunSql , 这样不会显示烦人的提示
CurrentProject.Connection.Execute Sql
作者:
chaojianan
时间:
2009-4-14 21:07
学习了。谢谢。
作者:
foreseer201
时间:
2009-4-14 21:14
本帖最后由 foreseer201 于 2009-4-14 21:15 编辑
感谢andymark老大,一次教会了两种解决方法。
作者:
asklove
时间:
2009-4-15 08:47
摘之论坛上的一位高手
工具-选项-编辑/查找-操作查询-不要勾上
这样你更新查询或删除查询什么的,就不会弹出信息确认
作者:
foreseer201
时间:
2009-4-15 09:58
多谢asklove。又学到一招
作者:
foreseer201
时间:
2009-4-15 16:56
第二个问题原因也找到了,和字符串无关。是因为在WorkBook对象还没关闭的时候就循环执行select into的操作了(在打开的workbook对象中遍历每个worksheet进行select into),事实证明这样很慢。
解决的方式是在遍历Excel文件的时候不做别的操作,只将得到的Excel路径、Sheet名等保存起来(比如保存在一个数组里),遍历完毕关闭workbook对象之后,再从该数组里获取文件路径和sheet名的列表进行循环导入,这样速度就快多了。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3