设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3172|回复: 7
打印 上一主题 下一主题

[模块/函数] doCmd执行select into时的问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-14 18:53:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有多个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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-4-14 20:42:41 | 只看该作者
DoCmd.SetWarnings False
sql = "select * into Sheet1 from [Excel 8.0;Database=D:\Test.xls].[Sheet1$]"
DoCmd.RunSQL SQL

完成后再改回来
DoCmd.SetWarnings True
3#
发表于 2009-4-14 20:44:04 | 只看该作者
直接用 Execute 代替RunSql  , 这样不会显示烦人的提示
CurrentProject.Connection.Execute Sql
4#
发表于 2009-4-14 21:07:18 | 只看该作者
学习了。谢谢。
5#
 楼主| 发表于 2009-4-14 21:14:06 | 只看该作者
本帖最后由 foreseer201 于 2009-4-14 21:15 编辑

感谢andymark老大,一次教会了两种解决方法。
6#
发表于 2009-4-15 08:47:55 | 只看该作者
摘之论坛上的一位高手
工具-选项-编辑/查找-操作查询-不要勾上
这样你更新查询或删除查询什么的,就不会弹出信息确认
7#
 楼主| 发表于 2009-4-15 09:58:18 | 只看该作者
多谢asklove。又学到一招
8#
 楼主| 发表于 2009-4-15 16:56:11 | 只看该作者
第二个问题原因也找到了,和字符串无关。是因为在WorkBook对象还没关闭的时候就循环执行select into的操作了(在打开的workbook对象中遍历每个worksheet进行select into),事实证明这样很慢。

解决的方式是在遍历Excel文件的时候不做别的操作,只将得到的Excel路径、Sheet名等保存起来(比如保存在一个数组里),遍历完毕关闭workbook对象之后,再从该数组里获取文件路径和sheet名的列表进行循环导入,这样速度就快多了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-10-7 04:32 , Processed in 0.103752 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表