MS Excel研究:如何在不打开文件的情况下更换数据链接?

更换数据链接,几乎成为了一个我日常工作中的一个常见动作。

然而Excel因为其局限性,在面对海量数据和多个数据链接的时候,更换数据链接会显得十分吃力,毕竟程序自带的更换源也好,你通过公式替换也好,还是很慢。

工作后从师父那里学到一个办法可以稍快一点,就是打开文件和链接数据的文件,在不关闭任何文件的情况下将链接的文件另存为,然后将要另存为的文件存成要替换文件相同名称(此时要替换的文件并没有复制过来),然后关闭另存为文件,用真正的新文件替换掉刚刚另存为的文件,这样就可以当着文件的面把链接改掉了。

但是事实上在前不久无意间发现了个新办法,也许早就有大佬研究出来了,但还是决定发出来。

那就是不打开文件的情况下强行更换掉数据链接,当然,有几个先决条件:

1.备份(谁知道不备份直接换之后会有哪些问题?)

2.公式要保证运算不会有问题(否则换源后因为公式问题计算错误就等于没改,而且公式没了链接没了都没地方哭去)

3.必须是XLSX文件(XLS文件不行,WPS的没试过)

要直接更换掉文件的数据链接,首先要将文件的后缀名改掉,比如这里我创建了一个文件叫Filelist_general.xlsx,首先把后缀改成rar或者zip

打开以后是这样的

打开xl\externalLinks\_rels文件夹,这个目录下的rels文件记录了这个文件所有的数据链接的来源:

 

这里为了展示三种数据引用的不同情况,分别在三个不同的地方引用了文件,这三种情况分别是:

1.链接的文件和此文件在同一目录下

2.链接的文件和此文件不在同一目录,但是位于同一驱动器中

3.链接的文件和此文件不在同一驱动器中

接下来我们依次来看三种情况Excel是怎样命名文件的:

情况1:同一目录下,文件名为"filerev.xlsx"

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath" Target="filerev.xlsx" TargetMode="External"/></Relationships>

情况2:同一驱动器不同目录,文件名为"FilelistD.xlsx"

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath" Target="/Files/FilelistD.xlsx" TargetMode="External"/></Relationships>

情况3:不同驱动器,文件名为"Filelist.xlsx"

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath" Target="file:///E:\Games\Filelist.xlsx" TargetMode="External"/></Relationships>

 

可以看出来,链接的文件如果和源文件是同一目录下在Target属性后就只有双引号限定住的文件名,如果是同一驱动器不同目录下,Excel在确定位置的时候会加上相对位置,也就是将文件位于的文件夹也写入rels文件,层级关系用左斜杠表示,情况2中的Target="/Files/FilelistD.xlsx"其实就是指"D:/Files/FilelistD.xlsx"这个位置,由于都在D盘中,同一驱动器中的文件会省略掉盘符D:

而到了情况3,表示位置的方式有了一些变化,Target="file:///E:\Games\Filelist.xlsx",这表示一个主机上一个文件的绝对位置,位置在E:\Games\文件夹下,同时和前面也有不同的是除了file:///用了左斜杠外,表示文件夹层级关系的左斜杠变成了反斜杠

 

了解了以上三种情况的文件引用的差异,我们就可以根据不同情况修改数据链接了

同一目录下,直接修改Target属性双引号的文件名即可

同一驱动器不同目录,就要根据实际文件的路径做修改了,只需要确定在哪个文件夹,值得一提的是,如果是直接复制资源管理器中看到的文件路径,复制到记事本里路径会是反斜杠,必须保证文件路径的层级关系用的是左斜杠

不同驱动器下,就依样画葫芦就行了,直接将资源管理器中的文件路径复制过来替换掉file:///之后到文件名之前的内容即可

 

比如我将这里的换成E盘的Filelist.xlsx

按照前面的操作找到rels文件夹,然后将rels文件解压出来或者直接在压缩包中用记事本打开,修改完成后记得要重新打包进压缩包或者将修改更新到压缩包中

最后将后缀名改回xlsx

然后打开Excel,数据,数据链接,更新值即可

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值