如何让 Excel 在外部工作簿链接中使用相对路径

如何让 Excel 在外部工作簿链接中使用相对路径

在我们的公司内部,我们使用许多链接到其他 Excel 工作簿的 Excel 工作簿。

使用我们的服务,这很好,因为每个人都可以访问共享的网络驱动器,并且所有链接文件的文件路径保持不变。

然而,我们现在希望使用云存储服务,例如 Dropbox,但遇到了问题。对于我们测试过的所有服务,文件的文件路径在每台机器上都是不同的。例如,两台不同机器上的同一文件夹的文件位置如下:

机器 1 Dropbox = C:[机器 1]\Dropbox\Excel Folder\Excel File

机器 2 Dropbox = C:[机器 2]\Dropbox\Excel Folder\Excel File

发生这种情况时,每次从其他机器打开文件时,您都必须选择链接的来源。如果您创建一个包含指向机器 1 上其他文件的链接的文件,然后将其移动到机器 2,则机器 2 不知道路径中带有“机器 1”的文件存储在哪里。这对于我们使用这种存储方式来说是一个巨大的障碍,因为每个用户每次打开文件时都必须更改每个文件。

当使用 PowerPivot 并链接到数据模型中的其他文件时,这种情况变得尤为严重,因为所有数据模型数据源也必须更新。

我理解为什么会发生这种情况,但有没有办法解决这个问题并让文件以相对链接而不是绝对链接的方式链接在一起。

我们使用的是 Office 2013 和 2016

答案1

在某些情况下,在 Excel 中创建的外部链接将使用相对路径而不是绝对路径。这取决于电子表格的位置。最简单的方法是将 Excel 文档存储在同一个文件夹中。

请参阅此 URL 以了解更多信息(以下摘录):https://support.microsoft.com/en-us/kb/328440

  • 如果链接文件和源数据文件不在同一驱动器上,则驱动器号将与文件路径和文件名一起存储。
  • 如果链接文件和源数据文件位于同一文件夹中,则只存储文件名。
  • 如果源数据文件位于与链接文件嵌套在同一根文件夹中的文件夹中,则会存储一个属性以指示根文件夹。不会存储路径中共享的所有部分。例如,如果链接文件 C:\Mydir\Linked.xls 依赖于 C:\Mydir\Files\Source.xls,则存储的路径的唯一部分是 \Files\Source.xls。
  • 如果源数据文件位于链接文件的下一级文件夹,则会存储一个属性来指示这一点。例如,链接文件为 C:\Mydir\Files\Myfile\Linked.xls,源数据文件为 C:\Mydir\Files\Source.xls。Excel 仅存储 \MyDir\Files\ .. \Source.xls。注意:当链接文件复制到源文件所在文件夹的其他子文件夹时,这允许保持链接。例如,链接文件为 C:\Mydir\Files\Myfiles1\Linked.xls,源数据文件为 C:\Mydir\Files\Source.xls,链接文件 Linked.xls 从文件夹 C:\Mydir\Files\Myfiles1 复制到名为 C:\Mydir\Files\Myfiles2 的文件夹,并保持与 C:\Mydir\Files\Source.xls 的链接。

答案2

我不知道这是否会对您的情况有所帮助,但目前还没有人提到有一个设置可以告诉 Excel 使用相对路径而不是绝对路径。如果您真的想使用相对路径,不幸的是,微软会尽力提供帮助,并将它们设置为相对于该用户,因此只有当您可以让目的地对于每个用户都具有完全相同的相对路径时,链接才会起作用。这是其他人的反对建议。相对 URL 配置的设置屏幕截图

答案3

因此,可以使用相对路径而不是绝对路径,这样只要您将数据源文件保存在与使用它们的工作表相同的位置,您的数据源就可以继续工作。

但是 Excel 用户界面似乎没有任何方法可以改变路径。

但是,您可以使用与 UI 不同的方式编辑 XLSX。如果您将 XLSX 文件重命名为 .zip,则可以将其提取为“好像”它是一个 zip 文件(实际上 excel 工作簿是一个压缩文件)。然后在提取的 zip 文件中,打开 xl 目录,其中的文件为“connections.xml”

您会在那里找到“sourceFile”,您可以更改它并让它仅引用文件名。

然后,将“connections.xml”移回“压缩的”excel 文件中,并将其重命名为 XLSX。

请注意,仅将目录压缩回去并将其重命名为 XLSX 是不行的,因为任何 zip 命令都可能使用各种压缩算法和选项,而这些算法和选项并不总是与 Microsoft Excel 兼容……

因此最好的方法是将“connections.xml”移回已经存在的 zip 文件中(或者更好的是,如果您的 zip 文件处理器允许的话,直接在 zip 文件中编辑该文件)。

ExcelFile.xlsx\xl\connections.xml 文件将如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<connections xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="xr16" xmlns:xr16="http://schemas.microsoft.com/office/spreadsheetml/2017/revision16"><connection id="1" xr16:uid="{F9606253-9C57-4B65-839A-8DEF5AAEA9F7}" keepAlive="1" name="ThisWorkbookDataModel" description="Data Model" type="5" refreshedVersion="6" minRefreshableVersion="5" background="1"><dbPr connection="Data Model Connection" command="Model" commandType="1"/><olapPr sendLocale="1" rowDrillCount="1000"/><extLst><ext uri="{DE250136-89BD-433C-8126-D09CA5730AF9}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:connection id="" model="1"/></ext></extLst></connection><connection id="2" xr16:uid="{7FE915B8-2095-40EC-B6DC-A589A5A2D08D}" name="TimeTrackingUserEntryLog" type="103" refreshedVersion="6" minRefreshableVersion="5" refreshOnLoad="1" saveData="1"><extLst><ext uri="{DE250136-89BD-433C-8126-D09CA5730AF9}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:connection id="TimeTrackingUserEntryLog" autoDelete="1"><x15:textPr prompt="0" sourceFile="C:\Dropbox\Wonderful\LifeorLive\TimeTrackingUserEntryLog.csv" tab="0" comma="1"><textFields count="5"><textField type="YMD"/><textField/><textField type="text"/><textField type="text"/><textField type="text"/></textFields></x15:textPr><x15:modelTextPr headers="1"/></x15:connection></ext></extLst></connection></connections>

其中 C:\Dropbox 等是我的数据源的路径,它恰好是一个 csv 文件。

您可以删除整个路径并只保留“datasourcefilename.csv”。

希望有帮助!^^

答案4

可以在这里找到可行的解决方案:

https://excel.tv/how-to-create-a-relative-file-path-in-power-query/

相关内容