如何从已关闭的工作簿中取值?
问:如题,怎么样从已关闭的工作簿中获取数据?这是经常碰到有人问的问题。
答:Excel提供了用公式链接的方式从关闭的工作簿中取值,下面介绍了具体的方法。另外,给出了两段从已关闭的工作簿中取值的VBA参考程序。
使用公式
从已关闭的工作簿中获取值。例如要获取H盘目录下工作簿test的工作表Sheet1中单元格A1的值,可以在当前工作表中输入
='H:\09. Excel\05. 问与答\[test.xlsx]Sheet1'!$A$1
一般的引用规则
l 如果同一工作簿的工作表Sheet1需要引用工作表Sheet2中的单元格,那么应写为=Sheet2!A1
l 如果工作簿Book1要引用工作簿Book2的工作表Sheet1中的单元格,那么应写为=[Book2.xlsx]Sheet1!A1
l 如果工作簿Book1要引用工作簿My Book(即工作簿名包含空格)的工作表Sheet1中的单元格,那么应写为='[My Book.xlsx]Sheet1'!A1,即要加上一对单引号
l 如果要引用的工作簿关闭了,则必须加上该工作簿的完整路径,例如='C:\[MyBook.xlsx]Sheet1'!A1
使用VBA程序
1.下面是Tushar Mehta在dailydoseofexcel.com中提供的一段程序,用户选择或简单输入后即可获取源工作簿中工作表相应单元格的值,用于解决手工输入长的路径名和选择源工作簿中单元格容易导致错误和不方便的问题。
说明:
本程序运行时会相继出现3个对话框,分别要求用户选择源工作簿、输入源工作簿中的工作表名、以及选择要获取源工作簿工作表值的单元格区域。
在选择单元格时,可以直接在目标工作簿工作表中选择与源工作簿工作表相对应的单元格区域,不需要手工输入。
2.下面是John Walkenbach经典的Excel VBA编程宝典中的提供的一种方法——检索已经关闭的工作簿中的值。
程序代码如下:
说明:
参数path为关闭工作簿的完整路径(包括盘符)。
参数file为工作簿名称。
参数sheet为工作簿工作表的名称。
参数ref为工作簿工作表中的单元格。
代码中使用了XLM宏来达到目的。XLM宏在Excel 5之前的版本中使用,但后续版本仍支持它。
下面的代码测试了GetValue函数:
从关闭的工作簿test.xlsx中获取其工作表Sheet1中单元格A1的值。
当然,还有其他从关闭的工作簿中取值的方法,譬如在后台打开要取值的工作簿,获取值后再将其关闭。限于篇幅,今天我们不过多介绍,以后有机会再详解。