如何使 Excel 在外部工作簿連結中使用相對路徑

如何使 Excel 在外部工作簿連結中使用相對路徑

在我們公司內,我們使用許多連結到其他 Excel 工作簿的 Excel 工作簿。

使用我們的服務,這很好,因為每個人都訪問共享網路驅動器,並且所有連結文件的文件路徑保持不變。

然而,我們現在希望使用雲端儲存服務,例如 Dropbox,但遇到了問題。對於我們測試過的所有服務,每台電腦的檔案路徑都不同。

機器 1 Dropbox = C:[機器 1]\Dropbox\Excel 資料夾\Excel 文件

機器 2 Dropbox = C:[機器 2]\Dropbox\Excel 資料夾\Excel 文件

發生這種情況時,每次從不同的電腦開啟檔案時,您都必須選擇連結的來源。如果您建立一個包含指向電腦 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。注意 當連結檔案複製到來源檔案所在資料夾的其他子資料夾時,這允許保留連結。 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/

相關內容