ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请问,能否在Excel文件打开时 ,以SQL 方式连接并操作数据库?谢谢!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-6-18 17:03 | 显示全部楼层 |阅读模式
请问,我用 SQL 连接 Excel 文件时,当文件打开时,连接失败,文件关闭时,连接成功,请问,能否在Excel文件打开时 ,以SQL 方式连接并操作数据库?谢谢!

TA的精华主题

TA的得分主题

发表于 2016-6-18 17:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
在Thisworkbook里的
  1. Private Sub Workbook_Open()

  2. End Sub
复制代码
里设置代码就可以啦

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-6-18 18:12 | 显示全部楼层
microyip 发表于 2016-6-18 17:07
在Thisworkbook里的
里设置代码就可以啦

谢谢回帖,不过我不是这个意思,在com加载项里,我要用 SQL 语句查询某 Excel 文件的数据,但连接时,需要该 Excel 文件是关闭的,但我想在它打开的状态下连接,不知行不行?还请指导 ,谢谢!

TA的精华主题

TA的得分主题

发表于 2016-6-19 10:37 | 显示全部楼层
WPS会有此种情况,可能是独占打开造成的
但是EXCEL内可以连接打开的文件 的!

TA的精华主题

TA的得分主题

发表于 2016-10-19 16:58 | 显示全部楼层
现在我的需求也是需要解决,如何用SQL连接已经打开的excel文件。关注中。

TA的精华主题

TA的得分主题

发表于 2016-10-20 11:52 | 显示全部楼层
opiona 发表于 2016-6-19 10:37
WPS会有此种情况,可能是独占打开造成的
但是EXCEL内可以连接打开的文件 的!

求大神指导如何连接,我这边如果先使用workbooks.open打开后,再进行SQL连接操作会出现找不到目标工作表的情况。可以麻烦看看代码哪里出了问题么?
  1. Sub test()
  2.     Dim File As Workbook
  3.     Dim Index As Worksheet
  4.     Dim cnn
  5.     Dim rst
  6.     Dim SQL$
  7.     Dim Path, Text1, SheetName As String
  8.    
  9.     Path = ThisWorkbook.Path & ""
  10.     Text1 = "test.xlsx"
  11.     SheetName = "Sheet1"
  12.    
  13.     Set ExcelApp = CreateObject("Excel.Application")
  14.     Set File = ExcelApp.Workbooks.Open(Filename:=Path & Text1, Password:="123")
  15.     Set Index = File.Worksheets(SheetName)
  16.    
  17.     Sheets("Sheet1").Range("a2:e65536").ClearContents
  18.     Sheets("Sheet1").Select
  19.    
  20.     Set cnn = CreateObject("adodb.connection")  'Create DB Connection
  21.     Set rst = CreateObject("adodb.recordset")
  22.     cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;extended properties=Excel 12.0;Data Source=" & Path & Text1
  23.     SQL = "select [Loan No#] from [" & SheetName & "$A1:DH1048576]"
  24.     Set rst = cnn.Execute(SQL)
  25.     Worksheets("Sheet1").Range("a" & Range("A65536").End(xlUp).Row + 1).CopyFromRecordset rst
  26.    
  27.     rst.Close
  28.     cnn.Close     'Close SQL Connection
  29.     Set rst = Nothing
  30.     Set cnn = Nothing    'Clean SQL from RAM
  31.    
  32.     File.Close True
  33.     Set ExcelApp = Nothing
  34.     Set File = Nothing
  35.       
  36. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-6-27 16:19 | 显示全部楼层
'先判断文件是否存在,然后只读打开 隐藏(针对 放共享文件夹 其他电脑打开的情况)
If Dir(完整路径, vbDirectory) <> "" Then
Workbooks.Open 完整路径, , True
Windows("文件名.xlsx").Visible = False
End If

'关闭文件
Set XLSM = GetObject(完整路径)
Windows("文件名.xlsx").Visible = True
XLSM.Close False
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-27 21:12 , Processed in 0.033164 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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