ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 求助关于不打开工作簿获取其他工作簿数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-22 16:02 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
附件已上传,附件中的工作簿都是以共有的文件名_年月日时分秒命名的,有没有什么办法不打开工作簿获取其他工作簿数据,始终获取文件名中日期最新的那一份工作簿中sheet1的信息,有没有什么办法,拜谢各位大佬

附件.zip

23.36 KB, 下载次数: 7

TA的精华主题

TA的得分主题

发表于 2023-3-22 16:18 | 显示全部楼层
如果格式准确不变的话,可以先判断最新的工作簿的名称来获取指定文件名+路径,然后用SQL获取最新工作簿里的指定信息

TA的精华主题

TA的得分主题

发表于 2023-3-22 16:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
image.png 你这个文件名称只要取后面数字最大的应该就是最新的那个工作簿了

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 16:26 | 显示全部楼层
无敌小猪猪 发表于 2023-3-22 16:19
你这个文件名称只要取后面数字最大的应该就是最新的那个工作簿了

这个我知道,但是我不知道怎么去实现

TA的精华主题

TA的得分主题

发表于 2023-3-22 16:27 | 显示全部楼层
附件请参考。。。

QQ图片20230322162515.png

附件.zip

39.67 KB, 下载次数: 13

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-22 16:32 | 显示全部楼层
附件.rar (40.75 KB, 下载次数: 17)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 16:49 | 显示全部楼层

好像有点问题,提示的日期,不是想要的日期

TA的精华主题

TA的得分主题

发表于 2023-3-22 16:52 | 显示全部楼层
本帖最后由 fzxba 于 2023-3-22 17:14 编辑
风过天涯 发表于 2023-3-22 16:49
好像有点问题,提示的日期,不是想要的日期

我是以最新创建日期,改也简单……
若改,此楼补充

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 16:58 | 显示全部楼层
fzxba 发表于 2023-3-22 16:52
我是以最新创建日期,改也简单……
若改,此楼补充

不用了,挺好的,谢谢

TA的精华主题

TA的得分主题

发表于 2023-3-22 19:33 | 显示全部楼层
您可以使用ADO连接方式,在VBA中通过SQL语句获取其他工作簿的数据,而无需打开工作簿。以下是一个简单的示例:

Sub ReadDataFromOtherWorkbook()

    '定义变量
    Dim conn As Object
    Dim rs As Object
    Dim sql As String
    Dim connStr As String
    Dim filePath As String
    Dim sheetName As String
   
    '设置变量值
    filePath = "C:\Users\UserName\Documents\OtherWorkbook.xlsx" '请替换为您自己的文件路径
    sheetName = "Sheet1" '请替换为您要读取数据的工作表名称
   
    '设置连接字符串
    connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filePath & _
              ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'"
              
    '打开连接
    Set conn = CreateObject("ADODB.Connection")
    conn.Open connStr
   
    '设置SQL语句
    sql = "SELECT * FROM [" & sheetName & "$]"
   
    '执行SQL语句
    Set rs = conn.Execute(sql)
   
    '将数据复制到当前工作簿中
    Range("A1").CopyFromRecordset rs
   
    '关闭连接
    rs.Close
    conn.Close
   
    '释放对象
    Set rs = Nothing
    Set conn = Nothing

End Subvb
Sub ReadDataFromOtherWorkbook()

    '定义变量
    Dim conn As Object
    Dim rs As Object
    Dim sql As String
    Dim connStr As String
    Dim filePath As String
    Dim sheetName As String
   
    '设置变量值
    filePath = "C:\Users\UserName\Documents\OtherWorkbook.xlsx" '请替换为您自己的文件路径
    sheetName = "Sheet1" '请替换为您要读取数据的工作表名称
   
    '设置连接字符串
    connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filePath & _
              ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'"
              
    '打开连接
    Set conn = CreateObject("ADODB.Connection")
    conn.Open connStr
   
    '设置SQL语句
    sql = "SELECT * FROM [" & sheetName & "$]"
   
    '执行SQL语句
    Set rs = conn.Execute(sql)
   
    '将数据复制到当前工作簿中
    Range("A1").CopyFromRecordset rs
   
    '关闭连接
    rs.Close
    conn.Close
   
    '释放对象
    Set rs = Nothing
    Set conn = Nothing

End Sub
在此示例中,首先通过ADO连接字符串打开其他工作簿,然后使用SQL查询语句获取工作表中的数据。将数据复制到当前工作簿后,使用Close方法关闭连接,并使用Nothing关键字释放对象的内存空间。

需要注意的是,为了使用ADO连接方式,您需要安装Microsoft Access数据库引擎。此外,有关连接字符串的详细信息和语法,可以参考Microsoft官方文档。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 15:53 , Processed in 0.040098 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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