|
|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
VBA里也可以用SQL语句...
输出至工作表Sheet2,这个Sheet2如果不存在就手动添加一下,不想用程序写了...
写的比较粗糙,仅供参考:
- Sub Excel_OLEDB()
- '前期绑定: 菜单-工具-引用-Microsoft ActiveX Data Objects 6.1 Library
- Dim aCnxn As New ADODB.Connection, aRcdset As New ADODB.Recordset
- '创建OLEDB连接
- With aCnxn
- .Provider = "Microsoft.ACE.OLEDB.12.0"
- .ConnectionString = "Extended Properties='EXCEL 12.0 Xml;HDR=Yes;IMEX=1';" & _
- "Data Source=" & ThisWorkbook.FullName
- .CursorLocation = adUseClient
- .Open
- End With
- '指定数据区域。 写成[Sheet1$A:C]指定区域范围时最大行数只支持65536行?
- Dim DataRng As String
- DataRng = "[Sheet1$]"
- 'SQL语句
- Dim strSQL As String
- strSQL = "select o.订单号,o.订单进度,o.时间 from " & DataRng & _
- "o inner join (select 订单号, max(时间) as 最近 from " & DataRng & _
- "group by 订单号) m on o.订单号=m.订单号 and o.时间=m.最近"
- 'Recordset的Open方法获取询结果
- aRcdset.Open strSQL, aCnxn, adOpenKeyset, adLockBatchOptimistic
- 'Debug.Print aRcdset.RecordCount '打印结果行数
- '输出字段标题
- For i = 0 To aRcdset.Fields.Count - 1
- Sheet2.Cells(1, i + 1).Value = aRcdset.Fields(i).Name
- Next i
- '输出数据
- Sheet2.[A2].CopyFromRecordset aRcdset
- '关闭连接,释放内存
- aRcdset.Close: Set aRcdset = Nothing
- aCnxn.Close: Set aCnxn = Nothing
- End Sub
复制代码 |
评分
-
2
查看全部评分
-
|