现在数据量越来越大,想实现VBA+ADO。因为单位使用WPS居多。编写的代码语句在office2016中能顺利运行并提取到数据,但是在WPS2019(已安装宏)中无法运行。于是从http://club.excelhome.net/thread-1432952-4-1.html了解到可能还需要安装插件,所以到了微软官网下载了【Microsoft Access 2016 数据库引擎可再发行程序包】,最终还是失败。在此请教各位大神有没有比较好的解决方案,谢谢。

代码如下(摘自——看见星光)

Sub DoSql_Execute1()

Dim cnn As Object, rst As Object

Dim strPath As String, str_cnn As String, strSQL As String

Dim i As Long

Set cnn = CreateObject("adodb.connection")

strPath = ThisWorkbook.FullName

If Application.Version < 12 Then

str_cnn = "Provider=Microsoft.jet.OLEDB.4.0;ExtendedProperties=Excel 8.0;Data Source=" & strPath

Else

str_cnn = "Provider=Microsoft.ACE.OLEDB.12.0;ExtendedProperties=Excel 12.0;Data Source=" & strPath

End If

cnn.Open str_cnn

strSQL = "SELECT 姓名,成绩 FROM [Sheet1$] WHERE 成绩>=80"

Set rst = cnn.Execute(strSQL)

Worksheets("结果表").Select

Cells.ClearContents

For i = 0 To rst.Fields.Count - 1

Cells(1, i + 1) = rst.Fields(i).Name

Next

Range("a2").CopyFromRecordset rst

cnn.Close

Set cnn = Nothing

End Sub

代码运行后str_cnn ="Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;DataSource=" & strPath

但往往在【cnn.Open str_cnn】这一句中出错。

fa4410a1bf2e6f103aa387dfbeb3853e.gif

image.jpg (229.97 KB, 下载次数: 0)

2021-1-19 14:39 上传

fa4410a1bf2e6f103aa387dfbeb3853e.gif

image.jpg (116.19 KB, 下载次数: 0)

2021-1-19 14:39 上传

fa4410a1bf2e6f103aa387dfbeb3853e.gif

image.png (71.78 KB, 下载次数: 0)

2021-1-19 14:39 上传

Logo

一站式 AI 云服务平台

更多推荐