Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1870|回复: 9

[已解决]请高手帮我改改代码,谢谢(批量导入、查找)谢谢!

[复制链接]
发表于 2010-11-16 20:18 | 显示全部楼层 |阅读模式
请高手帮我改改代码,谢谢(批量导入、查找)谢谢
最佳答案
2010-11-16 20:28

你数据库中是文本,你EXCEL中却是数字类型。所以即使SQL正确也会提示错误。要想正确运行,先把EXCEL中的数据类型和ACCESS中保持一致

Sub ado_update_access_click()
    Dim endroww, roww%, addr$, sql$
    Start = Timer
    Set conn = CreateObject("adodb.connection")
    conn.Open "provider=microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "\LGX.mdb;jet oledb:database"
    endroww = [a65536].End(xlUp).Row
    addr = Range("A1").CurrentRegion.Address(0, 0)
     sql = "insert into [LGX] select * from [Excel 8.0;Database=" & ThisWorkbook.FullName & "].[sheet1$]"
    conn.Execute sql
    conn.Close
    Set conn = Nothing
    MsgBox "更新完毕。用时 " & Timer - Start & " 秒"
End Sub

7g23tJiV.rar

26.03 KB, 下载次数: 28

请高手帮我改改代码,谢谢(批量导入、查找)谢谢!

 楼主| 发表于 2010-11-16 20:20 | 显示全部楼层

谢谢

hkOzipBx.rar (26.03 KB, 下载次数: 28)
回复

使用道具 举报

 楼主| 发表于 2010-11-16 20:22 | 显示全部楼层

请各位高手帮帮忙啊,谢谢,我在线等

请各位高手帮帮忙啊,谢谢,我在线等

回复

使用道具 举报

发表于 2010-11-16 20:28 | 显示全部楼层    本楼为最佳答案   

你数据库中是文本,你EXCEL中却是数字类型。所以即使SQL正确也会提示错误。要想正确运行,先把EXCEL中的数据类型和ACCESS中保持一致

Sub ado_update_access_click()
    Dim endroww, roww%, addr$, sql$
    Start = Timer
    Set conn = CreateObject("adodb.connection")
    conn.Open "provider=microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "\LGX.mdb;jet oledb:database"
    endroww = [a65536].End(xlUp).Row
    addr = Range("A1").CurrentRegion.Address(0, 0)
     sql = "insert into [LGX] select * from [Excel 8.0;Database=" & ThisWorkbook.FullName & "].[sheet1$]"
    conn.Execute sql
    conn.Close
    Set conn = Nothing
    MsgBox "更新完毕。用时 " & Timer - Start & " 秒"
End Sub

回复

使用道具 举报

 楼主| 发表于 2010-11-16 20:36 | 显示全部楼层

谢谢

谢谢
回复

使用道具 举报

 楼主| 发表于 2010-11-16 20:43 | 显示全部楼层

批量导入没问题了,但是批量查找怎么改呢?谢谢

批量导入没问题了,但是批量查找怎么改呢?谢谢
回复

使用道具 举报

发表于 2010-11-16 20:58 | 显示全部楼层

Sub 查询()
Set cnn = CreateObject("adodb.connection")
Set rst = CreateObject("adodb.recordset")
'stpath = ThisWorkbook.Path & Application.PathSeparator & "LGX.mdb"
cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "\LGX.mdb"
For i = 2 To 10
    Sql = "select * from LGX where 机号 like '%" & Range("A" & i) & "%'"
    Range("B" & i).CopyFromRecordset cnn.Execute(Sql)
Next i
Set rst = Nothing
Set cnn = Nothing
End Sub
[此贴子已经被作者于2010-11-16 20:59:26编辑过]
回复

使用道具 举报

 楼主| 发表于 2010-11-16 21:20 | 显示全部楼层

1

谢谢,可以查找了,但是公司电脑太差了,这样查找要死机的(4年前的电脑)

能不能在数据库里只需查找一次,然后把所有满足条件的数据显示出来(最好一次只查找3千条数据左右)

万分感谢,小弟在线等

回复

使用道具 举报

发表于 2010-11-16 22:26 | 显示全部楼层

只查找一次?
回复

使用道具 举报

 楼主| 发表于 2010-11-16 22:51 | 显示全部楼层

如果我需要在2万个数据里查找其中的2千个数据,只需在数据库里搜索一次,然后就得出我需要的2千个数据,能行吗?这样就可以节约时间了

不是像现在这样要查找的2千个数据,相当于要在数据库里搜索2千次,才能得出结果。

谢谢,让你费心了。

[此贴子已经被作者于2010-11-16 22:53:43编辑过]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-28 15:00 , Processed in 0.274701 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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