ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何使用VBA+SQL+ADO获取每个人登入的最早时间和登出的最迟时间

如何使用VBA+SQL+ADO获取每个人登入的最早时间和登出的最迟时间

作者:绿色风 分类: 时间:2022-08-18 浏览:64
楼主
xmyjk
Q:如何使用VBA+SQL+ADO获取每个人登入的最早时间和登出的最迟时间

 

A:
  1. Option Explicit
  2. Sub test()
  3. Dim cnn As Object, sql As String, rcd As Object, i As Integer, ADD As String

  4. Application.ScreenUpdating = False
  5. [M:O].CurrentRegion.Clear
  6. ADD = Range([A2], [C65536].End(3)).Address(0, 0) '获得数据源所在位置的地址
  7. Set cnn = CreateObject("ADODB.Connection") '建立ADOBC连接对象
  8. Set rcd = CreateObject("ADODB.recordset") '建立收集器对象
  9. cnn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName '打开连接,建立连接基底

  10. sql = "SELECT 操作员工号, MIN(登入时间) as 最早登入时间,MAX(登出时间) AS 最晚登出时间 FROM [Sheet1$" & ADD & "] GROUP BY 操作员工号"

  11. rcd.Open sql, cnn '将SQL后的数据写入收集器
  12. For i = 1 To rcd.Fields.Count '将表头写入单元格
  13.       Cells(3, 12 + i) = rcd.Fields(i - 1).Name
  14. Next

  15. [M4].CopyFromRecordset rcd '将数据写入表格后的单元格

  16. rcd.Close: Set rcd = Nothing '关闭连接,释放对象
  17. cnn.Close: Set cnn = Nothing

  18. Columns("N:O").NumberFormat = "yyyy-m-d h:mm" '设置数据格式为日期和时间
  19. Application.ScreenUpdating = True
  20. MsgBox "Ok"
  21. 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总版主之一

评论列表
sitemap