ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]通过单元格修改链接工作簿的名称

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-12-13 20:06 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
各位大侠,大家好!
我目前工作上碰到一个棘手的问题花了好几小时都没琢磨出来,特来向大家求教,希望能够得到解答,
工作急用,否则我也不会这么着急发上来让大家劳神了,谢谢大家!{:soso_e100:}
问题:
有一张工作表的数据链接到123.xls工作簿,先我希望在C4单元格中输456,将所有的链接修改为456.xls。请问有什么好办法能够在不打开目标工作簿的情况下读取456.xls工作簿的数据并更新本表? QQ截图20121213195625.png

Book1.rar (17.76 KB, 下载次数: 15)

TA的精华主题

TA的得分主题

发表于 2012-12-13 23:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请参考附件。

Book1.zip

22.71 KB, 下载次数: 13

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-14 02:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
hehex 发表于 2012-12-13 23:21
请参考附件。

谢谢hehex的热心帮助。不过可能之前我的表述还不清晰。我是希望能够通过修改对应的公司代码实现对链接该公司数据来源进行更新。比如某公司代码为123,这家公司今年和上年的数据分别存放在123.xls和s123.xls里,而我要做的这张表已经将这两张表的重要数据链接到Book1.xls上。目前我有相同的公司数据,公司代码为456,那么我在Book1的C4单元格修改公司代码,就能把对应的链接修改为456.xls和s456.xls,而不需要重新设置链接。
您给我的代码中
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$C$4" Then Exit Sub
    Range("c7").Formula = "=sum('" & ThisWorkbook.Path & "\[" & Target.Value & ".xlsx]Sheet1'!$A$1)"
    Range("c8").Formula = "=sum('" & ThisWorkbook.Path & "\[S" & Target.Value & ".xlsx]Sheet1'!$A$1)"
End Sub

已经对C7和C8单元格整体进行了修改,而我只需要将C7和C8单元格里链接公式的工作簿名进行修改即可,因为链接公式中的工作表名和单元格是不一样的,只有工作簿名需要修改。您看可否有良策以解?

TA的精华主题

TA的得分主题

发表于 2012-12-14 10:16 | 显示全部楼层
lanxian007 发表于 2012-12-14 02:25
谢谢hehex的热心帮助。不过可能之前我的表述还不清晰。我是希望能够通过修改对应的公司代码实现对链接该公 ...

对应的链接在哪里呢?你的例子文件里有吗?我只看到有两个从其他文件读取数据进行计算的公式。
根据公式分析是在当前文件同目录下的文件。按你的描述将公式中需打开的文件名称进行了变量化,即自动读取你的C4 单元格值。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-14 14:24 | 显示全部楼层
hehex 发表于 2012-12-14 10:16
对应的链接在哪里呢?你的例子文件里有吗?我只看到有两个从其他文件读取数据进行计算的公式。
根据公式 ...

Book3.rar (61.61 KB, 下载次数: 8)
好的。我上午又仔细地思考了一番,做了一个类似文件,请看看。(不好意思,中午本想发上来,但网络不给力,吃完饭后休息了一会儿,让您久等了:))
我目前通过indirect函数实现了类似功能,不过必须打开对应的表才能更新数值。请看是否有更好的方案,最好是VBA的方案可以直接读取对应表格数据而且找不到对应工作簿会报错。万分感谢!
33333333333.png

TA的精华主题

TA的得分主题

发表于 2012-12-14 16:16 | 显示全部楼层
本帖最后由 hehex 于 2012-12-14 16:17 编辑

按照你原来的思路贴l了ink,但是用link连接其他文件不稳定。会需要手动链接源文件,只能是半自动(参考附件)。
换了个思路,可以看文件名带-1.xls 文件,用其他方法读取单元格内容,稳定,没问题(其实也是打开源文件,只不过会自动快速关闭,用户感觉不到而已)。

Book3.zip

85.26 KB, 下载次数: 26

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-16 22:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
hehex 发表于 2012-12-14 16:16
按照你原来的思路贴l了ink,但是用link连接其他文件不稳定。会需要手动链接源文件,只能是半自动(参考附件 ...

hehex朋友,您好,非常感谢您的启发,刚才我结合了您的思路终于把这个问题解决(因为是周末,这两天没怎么上网)。我的思路是还是用indirect函数进行链接(不从VBA里走链接,因为链接涉及的表和单元格很多),然后用VBA的workbooks.open把对应的表打开,更新好数据后再关闭目标工作簿。这样效果非常好,解决了我一个大问题。希望今后能够再得到您的帮助,谢谢!:D
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 14:42 , Processed in 0.045686 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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