作者:绿色风
分类:
时间:2022-08-18
浏览:90
楼主 xmyjk |
Q:如何使用VBA+SQL+ADO获取每个人登入的最早时间和登出的最迟时间
A:- Option Explicit
- Sub test()
- Dim cnn As Object, sql As String, rcd As Object, i As Integer, ADD As String
- Application.ScreenUpdating = False
- [M:O].CurrentRegion.Clear
- ADD = Range([A2], [C65536].End(3)).Address(0, 0) '获得数据源所在位置的地址
- Set cnn = CreateObject("ADODB.Connection") '建立ADOBC连接对象
- Set rcd = CreateObject("ADODB.recordset") '建立收集器对象
- cnn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName '打开连接,建立连接基底
- sql = "SELECT 操作员工号, MIN(登入时间) as 最早登入时间,MAX(登出时间) AS 最晚登出时间 FROM [Sheet1$" & ADD & "] GROUP BY 操作员工号"
- rcd.Open sql, cnn '将SQL后的数据写入收集器
- For i = 1 To rcd.Fields.Count '将表头写入单元格
- Cells(3, 12 + i) = rcd.Fields(i - 1).Name
- Next
- [M4].CopyFromRecordset rcd '将数据写入表格后的单元格
- rcd.Close: Set rcd = Nothing '关闭连接,释放对象
- cnn.Close: Set cnn = Nothing
- Columns("N:O").NumberFormat = "yyyy-m-d h:mm" '设置数据格式为日期和时间
- Application.ScreenUpdating = True
- MsgBox "Ok"
- End Sub
表21.rar |
2楼 fortalk |
学习数据读写 |
3楼 海洋之星 |
嘿嘿,弦月VBA真厉害,学习了 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一