ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1965|回复: 7

WPS JSA通过OLEDB连接字符串访问EXCEL

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-4-12 08:20 | 显示全部楼层 |阅读模式
之前通过VBA的ADO可以便捷进行EXCEL多工作簿和工作表访问,通过sql语句进行数据提取,转换到JSA经过亲测,可以如下实现:
1、可以到微软官方网站下载安装“2010版32位 Microsoft Access 数据库引擎 AccessDatabaseEngine.exe"
(“2010版64位、2016版64位”都不行,“2016版32位 [未测试]”如果电脑上安装了office64位应用,提示无法安装)。

2、建立xlsm文件,打开WPS - 开发工具 - WPS宏编辑器,示例代码如下:

function 单工作簿单工作表获取数据(){
    let sqlstring = "SELECT * FROM [Sheet1$]"
    let connstring = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\\Users\\whw\\Desktop\\bbb.xlsx;Mode=Share Deny Write;Extended Properties='HDR=YES; ';Jet OLEDB:System database='';Jet OLEDB:Registry Path='';Jet OLEDB:Database Password='';Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password='';Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False"
  let qtadd = ActiveSheet.QueryTables.Add(connstring,Range("c4"),sqlstring)
    qtadd.Refresh()

}

function 多工作簿多工作表获取数据(){
  let sqlstring = "select a.*,b.* from [Excel 12.0;Database=C:\\Users\\whw\\Desktop\\aaa.xlsx].[Sheet1$] as a left join [Excel 12.0;Database=C:\\Users\\whw\\Desktop\\bbb.xlsx].[Sheet1$] as b on a.[id]=b.[id] "
    let connstring = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\\Users\\whw\\Desktop\\bbb.xlsx;Mode=Share Deny Write;Extended Properties='HDR=YES; ';Jet OLEDB:System database='';Jet OLEDB:Registry Path='';Jet OLEDB:Database Password='';Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password='';Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False"
  let qtadd = ActiveSheet.QueryTables.Add(connstring,Range("c4"),sqlstring)
    qtadd.Refresh()

}

TA的精华主题

TA的得分主题

发表于 2022-4-15 11:41 | 显示全部楼层
斗胆给大家捋一捋


链接字符串如下:

OLEDB;  //OLEDB方式
Provider=Microsoft.ACE.OLEDB.12.0;
Data Source = " "; 填写//excel文件目录
Extended Properties='HDR=YES; '  //把第一行作为标题;可能能加 IMEX=1/2之类的

可能只用写上面几句组合起来就好了就行了。。。大家可以测试下(我没测试,哈哈哈)

SQL 语句正常写。

最后通过QueryTables 链接数据源。
弊端可能是如果要把数据放到模板里,嗯,得多走一步。
楼主可以研究研究如何不用QueryTables这种方法取得数据。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-15 19:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
connstring连接串,我逐段缩减测试过,好像少一段好像都报错,只能写全,跟VBA的连接串不同。

TA的精华主题

TA的得分主题

发表于 2022-4-15 21:03 | 显示全部楼层
因为我同时安装了office和wps。所以并没有下载驱动。emmm。

我不知道你是怎么写的,但是不管ODBC,OLEDB.这些。他的点就那么些。

总之,我试了一下,成功了。

我试图还原下你的错误:
请用32位。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-8 11:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 jzzqwhw 于 2022-5-8 11:12 编辑

推荐一个sql客户端工具:GoldSqall,可以操作通过oledb,sql操作excel
屏幕截图 2022-05-08 111208.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-8 11:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
oledb数据库连接字符串可以简化为:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\whw\Desktop\bbb.xlsx;Extended Properties='Excel 12.0;HDR=Yes';

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-8 11:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
oledb数据库连接字符串,可以简化为:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\whw\Desktop\bbb.xlsx;Extended Properties='Excel 12.0;HDR=Yes';

TA的精华主题

TA的得分主题

发表于 2022-8-10 23:38 | 显示全部楼层
这个强,连数据库都能连上了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 18:10 , Processed in 0.043626 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表