Excel SQL使用的两种方法

来源:互联网 发布:电脑贵金属软件 编辑:程序博客网 时间:2024/05/20 02:25

详细可参考:http://club.excelhome.net/thread-859194-1-1.html

1、需要引用Microsoft ActiveX Data Object...

  1. Sub GetQuery()  
  2. Dim cn As ADODB.Connection  
  3. Set cn = New ADODB.Connection  
  4. With cn  
  5. .Provider = "Microsoft.Jet.OLEDB.4.0" 
  6. .ConnectionString = "Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";" & _  
  7. "Extended Properties=Excel 8.0;" 
  8. .Open  
  9. End With 
  10. Dim rs As ADODB.Recordset  
  11. Set rs = New ADODB.Recordset  
  12. rs.ActiveConnection = cn  
  13. 'Create sql string  
  14. sql_str = "select * from [sheet2$] " 'where field1='condition'"  
  15. rs.Open sql_str  
  16. ThisWorkbook.Sheets(3).[a2].CopyFromRecordset cn.Execute(sql_str)  
  17. ThisWorkbook.Sheets(1).[m1].CopyFromRecordset rs  
  18. rs.Close  
  19. cn.Close  
  20. End Sub 

 

2、不需要引用Microsoft ActiveX Data Object...

 

  1. '在Excel中使用SQL语句总结-1:  
  2. '************************************        标准SQL查找代码:       *********************************************************  
  3. Sub SQL_Excel_2003_2007()  
  4. 'On Error Resume Next       '如果出现错误,忽略,然后执行下一行代码。  
  5. Application.ScreenUpdating = False '关闭屏幕刷新,成对出现,提高速度  
  6. Application.DisplayAlerts = False '关闭提示,,成对出现,避免出现提示框  
  7. '---------------------------------------   参数声明部分  ------------------- ------------------- -------------------  
  8.     Dim cnn, SQL$   '定义数据库连接和SQL语句  
  9.     Set cnn = CreateObject("adodb.connection")  '创建数据库连接  
  10.     Set rs = CreateObject("adodb.recordset")   '创建一个数据集保存数据  
  11.      
  12. '---------------------------------------   设置数据库连接  ------------------- ------------------- -------------------  
  13.     cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName  
  14.       
  15.        '将EXCEL文件作为数据库连接,实际并不打开EXCEL,  
  16.        'Excel2003版本:cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.Path & "\数据表.xls"  
  17.        'Excel2007版本:cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.Path & "\数据表.xlsx"  
  18.        '带参数的连接字符串:cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;HDR=yes;IMEX=2';data source=" & ThisWorkbook.FullName  
  19.        '    HDR=Yes   代表 Excel 档中的工作表第一行是标题栏,标题只能是一行,不能使多行,或者合并的单元格。  
  20.        '    HDR=no     工作表第一行就是数据了,沒有标题栏,不使用栏位,则栏位就以f代表,第一列列名就是:f1,第二列列名:f2  
  21.        '    IMEX 汇入模式  0 只读  1 只写   2 可读写  
  22.        '              当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。  
  23.        '              当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。  
  24.        '              当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。  
  25.        'Data Source  存储查询数据来源的工作薄名称,数据库路径为:数据表.xls  或本表:& ThisWorkbook.FullName  
  26.          
  27. '---------------------------------------   设置SQL语句  ------------------- ------------------- -------------------  
  28.   SQL = "select * from  [数据表_1$A1:G100] where 姓名='马拉多纳'" 
  29.     
  30.        '在Sheet1表内查找列名为:姓名 中所有:马拉多纳 的数据。  
  31.        '[XXX$A2:G100]的中括号和$为特别数据表标示符,XXX为Sheet名,A2:G100是选取的区域。  
  32.        'SQL语句是一个字符串,双引号开头和结尾,列名两边无单引号,表示一个字符串:‘马拉多纳’,要用单引号扩上,数字就不用了。  
  33.        'Nu=36:  AA="马拉多纳":   set  Sh=Sheet1:  SQL = "select * from  [" & Sh.name & “$] where 姓名=‘” & AA & “’  and  年龄=Nu"  
  34.          
  35. '---------------------------------------   SQL结果处理  ------------------- ------------------- -------------------  
  36.    Set rs = cnn.Execute(SQL) '将SQL语句获得的数据传递给数据集  
  37.    Sheets("结果").Cells.ClearContents       '清理保存数据的区域  
  38.    Sheets("结果").Range("a2").CopyFromRecordset rs    '将数据集粘贴到Excel中,左上角为A2,无列名。  
  39.    'Sheets("结果").Range("b2").CopyFromRecordset cnn.Execute(SQL)  '可以不声明Y,直接使用  
  40.    cnn.Close     '关闭数据库连接  
  41.    Set cnn = Nothing    '将CNN从内存中删除。  
  42. '--------------------------------------- ------------------------ ------------------- -------------------  
  43. Application.ScreenUpdating = True 
  44. Application.DisplayAlerts = True 
  45. End Sub   '这就是最简单的EXCEL中SQL的应用 ,其他的都是SQL的运用了 

获取字段名的代码:

 

  1.  Dim Strsql$, Cn As Object 
  2. Set yy= CreateObject("adodb.recordset")  
  3. Set Cn = CreateObject("Adodb.Connection")  
  4.  
  5.  
  6.    Sql = "SELECT 级别,A组,特别组 from [数据$] where  级别='" & NianJ & "'" 
  7.               Set yy = Cn.Execute(Sql)  
  8.               For L = 0 To yy.Fields.Count - 1  
  9.                   sh.Cells(1, L + 2) = yy.Fields(L).Name  
  10.                Next L 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 出现连接问题或mmi码无效怎么办 存折丢了怎么办卡号也不记得了 车内皮子被烂苹果腐蚀有印怎么办 锅被腐蚀后变黑色应该怎么办 后厨炉灶里的炉芯进水了怎么办 小儿九个月老是流黄鼻子该怎么办 肉炖的老了不烂怎么办 吃了凉东西现在一直打嗝应该怎么办 喝了很多水还是觉得口渴怎么办 刚买的猪肝没洗直接炒了怎么办 四个多月的宝宝吃了脏东西怎么办 狗吃了脏东西拉稀呕吐怎么办 五个月宝宝怕吃药导致奶不喝怎么办 蒸锅锅盖吸住了怎么办锅比锅盖要大 豇豆没熟孕妇吃了中毒怎么办 孩子积食拉不出粑粑憋的直哭怎么办 2岁宝宝总是半夜拉粑粑怎么办 金毛拉很臭的稀粑粑怎么办 点餐系统登录后没有菜单怎么办? 环亚在线微交易亏了钱怎么办 钢管舞报了教练班觉得学不会怎么办 微信上聊天被外国人给骗了该怎么办 微信冒充朋友骗走我钱怎么办 凉皮调料水鸡精味精放多了怎么办 吃了地屈孕酮后月经不干不净怎么办 藕片用热水炒后变色了怎么办? 外汇延期收款忘了报告了怎么办 怀孕不小心吃了马生菜怎么办 高压锅的皮圈很容易坏是怎么办 华为应用市场账号密码忘记了怎么办 业主对我们提出批评意见时怎么办 向环保局投诉被公司发现了怎么办 在政务大厅上班被群众投诉怎么办 政府下发的文件通知不履行该怎么办 给私人老板开车不给工资怎么办 给个体老板开车不给工资怎么办 户口转走在人才市场的档案怎么办 外来媳妇转上海户口没有档案怎么办 公务员考试笔试差9分面试怎么办 想从事人事方面的工作没经验怎么办 教师资格考试后户籍转走认定怎么办