作者:绿色风
分类:
时间:2022-08-18
浏览:117
楼主 xyh9999 |
发一个用SQL从Excel文件源中取数的通用程序,供大家参考与测试: SQLtest.rar
- '→→→→→LQC→AdoQuery通用程序→(开始)→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→--
- Sub LqcAdoQuery(cSourceFile, cDestSheet, cDestRang, nReadOnly, cSelect)
- '从cSourceFile文件(全路径)中取数,Sql语句是cSelect,结果存入cDestSheet表的cDestRang开始的块中,nReadOnly为防止多次ADO多次连接自身内存无法释放 1时生效 其他不生效。
- On Error Resume Next
- If nReadOnly = 1 Then '防死机标识为1时
- Application.DisplayAlerts = (1 = 2)
- Application.ScreenUpdating = (1 = 2)
- ThisWorkbook.ChangeFileAccess xlReadOnly '转为只读
- End If '防死机标识为1时
- Set cn = CreateObject("ADODB.Connection")
- cn.Open "dsn=excel files;dbq=" & cSourceFile '打开链接
- Sheets(cDestSheet).Range(cDestRang).CopyFromRecordset cn.Execute(cSelect) '放置查询结果
- Set cn = Nothing '对象置空,释放内存
-
- If nReadOnly = 1 Then '防死机标识为1时
- ThisWorkbook.ChangeFileAccess xlReadWrite
- Application.DisplayAlerts = (1 = 1)
- Application.ScreenUpdating = (1 = 1)
- End If '防死机标识为1时
- On Error GoTo 0
- End Sub
- '→→→→→LQC→AdoQuery通用程序→(结束)→→→→→→→→→→→→→→→→→→→→→→→→→→→--
- Sub test()
- Sheet2.Cells.ClearContents
- LqcAdoQuery _
- cSourceFile:=ThisWorkbook.FullName, _
- cDestSheet:="Sheet2", _
- cDestRang:="a1", _
- nReadOnly:=1, _
- cSelect:="select 销售人员,sum(销售额) as 销售汇总 from [Sheet1$] where 销售人员 like 'AA%' group by 销售人员 Having sum(销售额)>800"
- End Sub
|
2楼 yjzstar |
学习收藏下! |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一