作者:绿色风
分类:
时间:2022-08-18
浏览:81
楼主 xmyjk |
Q:SQL语句,可以像宏一样调用么?
A:可以,使用VBA,利用ADO+SQL。顺便分享我的模板,里面还有如何将ADO+SQL后的语句导入数组操作等运用的收集。
- Option Explicit
- Sub test()
- Dim cnn As Object, sql As String, BT As String, rcd As Object, i As Integer, j As Integer
- Application.ScreenUpdating = False
- [a1].CurrentRegion.Clear
- Set cnn = CreateObject("ADODB.Connection")
- 'Set rcd = CreateObject("ADODB.recordset")
- cnn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName
- 'Cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=no';data source=" & 文件全路径 '不包含字段名的情况
- 'Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;imex=1';data source=" & 文件全路径 '同一列中数据类型不一致的情况
- sql = "Select * From[统计$] " & _
- "where 代码=600172"
- [a2].CopyFromRecordset cnn.Execute(sql) '.getrows (arr)
- 'rcd.Open sql, cnn
- 'For i = 1 To rcd.Fields.Count
- ' Cells(1, i) = rcd.Fields(i - 1).Name
- ' Next
- '[A2].CopyFromRecordset rcd
- 'j = 0
- 'rcd.MoveFirst
- 'Do Until rcd.EOF
- ' j = j + 1
- ' For i = 1 To rcd.Fields.Count
- ' Cells(j + 1, i) = rcd.Fields(i - 1).Value
- ' Next
- ' rcd.MOVENEXT
- 'Loop
- 'rcd.Close: Set rcd = Nothing
- cnn.Close: Set cnn = Nothing
- Application.ScreenUpdating = True
- MsgBox "Ok"
- End Sub
SQL模板.rar |
2楼 feng8103 |
请教如果同列中出现不同类型的数组,该如何处理。
例如: 代码 600172 600173 600174
前 2 个数据是数值型 第 3 个数据是文本类型 查询 600174 的话就会查不到。 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一