Excel で外部ワークブックのリンクに相対パスを使用する方法

Excel で外部ワークブックのリンクに相対パスを使用する方法

当社では、他の Excel ブックにリンクする Excel ブックを多数使用しています。

当社のサービスでは、全員が共有ネットワーク ドライブにアクセスし、リンクされたすべてのファイルのファイル パスが同じままであるため、これは問題ありません。

しかし、Dropbox などのクラウド ストレージ サービスを使用したいのですが、問題が発生しています。テストしたすべてのサービスでは、ファイルのファイル パスはマシンごとに異なります。たとえば、2 つの異なるマシン上の同じフォルダーのファイルの場所は次のようになります。

マシン 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/ja-jp/kb/328440 より

  • リンクされたファイルとソース データ ファイルが同じドライブ上にない場合、ドライブ文字はファイルへのパスとファイル名とともに保存されます。
  • リンクされたファイルとソース データ ファイルが同じフォルダーにある場合は、ファイル名のみが保存されます。
  • ソース データ ファイルが、リンク ファイルと同じルート フォルダーにネストされたフォルダーにある場合、ルート フォルダーを示すプロパティが保存されます。共有されているパスのすべての部分は保存されません。たとえば、リンク ファイル C:\Mydir\Linked.xls が C:\Mydir\Files\Source.xls に依存している場合、保存されるパスの部分は \Files\Source.xls のみです。
  • ソース データ ファイルがリンク ファイルより 1 つ下のフォルダーにある場合、これを示すプロパティが保存されます。たとえば、リンク ファイルは 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 に相対パスと絶対パスのどちらを使用するか指示する設定があることはまだ誰も言及していません。また、相対パスを本当に使用したい場合、残念ながら、Microsoft は協力的になり、そのユーザーに対して相対パスにしようとします。そのため、リンク先がすべてのユーザーに対してまったく同じ相対パスになる場合にのみ、リンクは機能します。これは、他の誰かが反対票を投じた提案でした。相対URL設定の設定スクリーンショット

答え3

したがって、絶対パスの代わりに相対パスを使用することも可能であり、データ ソース ファイルを、それらを使用するワークシートと同じ場所に保持している限り、データ ソースは引き続き機能します。

ただし、Excel ユーザー インターフェイスにはパスを変更する方法がないようです。

ただし、UI とは異なる方法で XLSX を編集できます。XLSX ファイルの名前を .zip に変更すると、zip ファイルであるかのように解凍できます (実際には Excel ワークブックは圧縮ファイルです)。次に、解凍​​した zip ファイルで xl ディレクトリを開き、その中にあるファイル「connections.xml」を開きます。

そこには「sourceFile」があり、これを変更してファイル名のみを参照するようにすることができます。

次に、「connections.xml」を「圧縮された」Excel ファイルに戻し、名前を XLSX に戻します。

ディレクトリを圧縮して名前を XLSX に変更するだけでは不十分です。これは、zip コマンドではさまざまな圧縮アルゴリズムやオプションが使用される可能性があり、必ずしも Microsoft Excel と互換性がないためです。

したがって、最善の方法は、「c​​onnections.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/

関連情報