ロゴ(青) Excel/VBA Tips ロゴ(緑)

Tips21: Excelのリンクの管理と格納(ワークブックの移動で起きるリンクエラーの仕組み)

(2015/5/12 : 初版 , 2015/5/20 : §7 & §8  を追記 , 2015/7/28 : §9 を追記 , 2015/9/30 : §10 を追記 ) 

§1. 外部参照とリンクエラー
§2. 外部参照リンク情報の記録ルール
§3. リンク情報の確認方法
§4. リンク情報の整理
§5. KB328440 に基づいた分類での解説
        5-1.  アドインブック と 同一フォルダに ユーザーブックを作成する場合
        5-2.  ルート から アドインブック が在るフォルダへの経路上にユーザーブック を作成する場合
        5-3.  ルート から アドインブック が在るフォルダへの経路から外れる位置にユーザーブック を作成する場合
        5-4.  アドインブック とは別のドライブに ユーザーブック を作成する場合
§6. 実務的なアドインの格納場所に基づいた解説
        6-1.  アドインブック を 「ユーザー アドインフォルダ(Addins フォルダ)」 に格納している場合
        6-2.  アドインブック を 「Officeアプリケーション アドインフォルダ(Library フォルダ)」 に格納している場合
        6-3.  アドインブック を 「スタートアップフォルダ(XLSTART フォルダ)」 に格納している場合
        6-4.  アドインブック を 「ネットワーク」 に格納している場合
        6-5.  アドインブック を 「各PC共通パスのフォルダ」 に格納している場合
        6-6.  「デスクトップに作成・保存したユーザーブック」 を他の場所へ移動する場合(アドインブックの格納場所による違い)
        このように様々な運用方法があるが、結局、リンクエラーを確実に回避できる運用方法は・・・
                Library フォルダ    もしくは    共通ブック専用 ドライブ(HDD パーティション)
§7.  ユーザーブック と アドインブック を共にネットワークPC に格納し、そのネットワークPC と 接続PC 双方で参照・更新を行なう場合
§8.  「KB 416397 : Excel でネットワーク上のファイルを開くと外部参照数式が正しくない」 の 図解
§9. Excel2013 / 2016 における注意事項 (相対パスの筈が絶対パスになる) ※要注意※  (2015/7/28 追記 , Excel2016 は修正済)
§10.  「KB 2808316 : Office 製品で UNC としてネットワーク マップされたドライブのハイパーリンク を解決します」 の 和訳修正


[ この場所へのリンク ] [ Top へ戻る ]

§1.外部参照とリンクエラー

Excelでは、自ブック以外のワークブックやアドインブックから「セル値またはユーザー定義関数」を
外部参照式として自ブック内のセルに記述することができます。

      =[UserBook.xlsx]Sheet1!A2    …… セルの参照
      =UserFunc(A1,A2)                  …… ユーザー定義関数の利用

参照先のワークブックやアドインブックが開かれている場合、セルには上記のような表示がされてい
ます。参照先のブックが閉じている状態では、下記のようにフルパスが付いた表示となります。

      ='C:\My Documents\TEMP\MyDir2\[UserBook.xlsx]Sheet1'!A2
      ='C:\My Documents\TEMP\MyDir1\AddinBook.xla'!UserFunc(A1,30)
        (補) セル値の場合は参照先ブックが閉じていても構いませんが、ユーザー定義関数の場合は
              参照先ブックが開いていないとリンクエラーとなります。


外部参照式を記述したワークブックを作成し、その後、そのワークブックを
      【作成時とは別のフォルダ/ドライブ、または別PCやネットワークドライブ】
移動・コピーさせるといった作業を度々行なっている事でしょう。

その際、参照先のブックが開いているにも関わらず
      外部参照式がリンクエラーになってしまう
      (上記のようなフルパス表示になっている、または #NAME! エラーになっている)
というトラブルにも度々遭遇しているのではないでしょうか。その度に、【リンクの編集】ダイアログ
によるリンク先の変更作業を余儀なくされている事でしょう。

しかも、ブックの移動・コピーによって、リンクエラーが起きたり起きなかったり、といった事にも
悩まされていませんか。

この記事では、外部参照のリンク情報が実際にどのような内容で記録されているのかを確認
するとともに、どのような移動・コピーの際にリンクエラーとなるのかを検証していきます。


尚、『参照設定(VBE メニューバー/ツール/参照設定)』によって、アドインブック等の参照先
ワークブックを開いている場合には、自ワークブック内の【参照設定情報】内にリンクパス情報が
格納されますので、ここで解説しているものとは異なる動き(リンクエラー)となります。
ここで解説している内容は、参照設定が無い状態での他ワークブックへのリンクに関する
ものだけです。



[ この場所へのリンク ] [ Top へ戻る ]

§2.外部参照リンク情報の記録ルール

外部参照のリンク情報が「ワークブック内で、どのように記録されているのか」という事については、
下記のMS-KBで解説されています。
   KB 328440
  Excel のリンクの管理と格納について
      https://support.microsoft.com/ja-jp/kb/328440  
  Description of link management and storage in Excel (原文)
      https://support.microsoft.com/en-us/kb/328440  

(注意事項)
上記の MS-KB では、下記の2点について日本語としては逆に思える表現がされていますので、読み取る
際には注意が必要です。
    注 : パスをに移動すると、ルート ドライブまたは共有から離れたフォルダを
        参照します。パスをに移動すると、ルート ドライブまたは共有に近くなります。
  Note: Moving up a path indicates that you are referring to folders moving away
          from the root drive or share. Moving down a path indicates that you are
          moving closer to the root drive or share.

  実際のパスの記述を例にとると、下記の意味になります。
      パスを上へ移動 : ネストが深くなる方向 ( C:\ ⇒ C:\ABC ⇒ C:\ABC\XYZ )
      パスを下へ移動 : ネストが浅くなる方向 ( C:\ABC\XYZ ⇒ C:\ABC ⇒ C:\ )

  私達が普段目にする ディレクトリツリー図 は 『ルートを天辺に置いて、下に向かって広がっていく』 もの
  ですが、それとは逆に 『ルートを底に置いて、上へ向かって広がっていく』 という図をもとに記述されたのか、
  それとも、"move up/move down" が各々 『パスを増やす/減らす』 という意味で使われているのか・・・ ?


    リンク先のファイルリンク元のデータ ファイル
  the linked file and the source data file

  アドイン関数の利用を例にとると、下記の意味になります。
      リンク先 : アドイン関数を利用するユーザーブック
      リンク元 : アドインブック

  linked ⇒ 過去分詞 ⇒ リンクされる側 ⇒ 日本語的には「リンクの相手」 ⇒ "リンク先" と和訳?
  source ⇒ 日本語的には"元"の意味合い ⇒ "リンク元" と和訳?

  リンク元/先 , 参照元/先の表現について、MicrosoftAnswers のスレッドにて回答しています。
      参照先と参照元について


リンクパスの記録ルールは、上記 MS-KB の『リンク パスの格納方法』の項に書かれていますので、そちら
をお読みください(ただし、上記の注意事項を念頭に読まないと混乱してしまいますのでお気を付けください)。


[ この場所へのリンク ] [ Top へ戻る ]

§3.リンク情報の確認方法

Excel2007 以降では、ワークブックがXML形式になりましたので、ワークブックを解凍する事に
よって、その中身を簡単に調べる事ができます(拡張子[xlsx , xlsm]を zipに変更して解凍します。
再び、xlsx/xlsm に変えればワークブックに戻ります)。

解凍して出来たフォルダの中身は下記のような構成になっており、externalLink1.xml.rels
外部参照のパス情報が記録されています(外部参照ブックひとつに、このファイルがひとつ作られ
ます)。このファイルをNotePad もしくは XML用エディタで開くか、そのファイルをダブルクリックして
ブラウザに表示させる事によって内容を確認できます。


externalLink1.xml.rels の記録例
  <Relationships>
    <Relationship
      Id="rId1"
      Type="http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlLibrary"
      Target="kt関数Addin.xla"

      TargetMode="External"/>
  </Relationships>

  <Relationships>
    <Relationship
      Id="rId1"
      Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath"
      Target="/Documents and Settings/●●●/Application Data/Microsoft/AddIns/kt関数Addin.xla"

      TargetMode="External"/>
  </Relationships>
  (補) ●●● は ユーザー名

Type : 外部参照ブックが格納されているフォルダの種別です(一般フォルダ or 特殊フォルダ)
         (a) 一般フォルダでは下記の記載がされます。
          "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath"

         (b) 特殊フォルダでは下記の記載となります(Office アプリケーション アドイン フォルダの場合)。
          "http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlLibrary"

Target : 実際のパスが記載されますが、フォルダの位置関係(自ブック vs 外部参照ブック)によって
            相対パスで記録されたり、フルパスで記録されたりします。


[ この場所へのリンク ] [ Top へ戻る ]

§4.リンク情報の整理

フォルダの位置関係(自ブック vs 外部参照ブック)によって、外部参照ブックへのリンク情報は、相対パスで
記録されたり、フルパスで記録されたりしますので、そのパターンを、上記KBに記載されているルールから
分類整理してみます。

    (注) Excel2013では、相対パス記録される筈のケース(同一フォルダ,赤点線枠の内&外)なのに
         絶対パスで記録されてしまう例外事象があります(§9 を参照)。



セルにフルパスで表示されているからといって、実際のリンク情報が「そのフルパス」で記録されているとは
限りません。上記のように、ファイルの位置関係によって「ファイル名のみ・相対パス・ドライブ無し」と記録
されている場合もあります。その場合には、自ブックのパスを基にして補正を加えた結果がセルに表示され
ているということです

ここから先では、
      UserBook.xls (自ブック) および AddinBook.xla (外部参照ブック)
を例として、その格納フォルダの位置関係を分類するとともに、その個々において
    (1) リンクパスが、どのように記録されるのか?
    (2) ブックの移動/コピーによって、リンクパスがどうなるのか?
    (3) その結果として、リンクエラーになるのか、ならないのか?
    (4) リンクエラーとならないようにするには、どうするべきか?
        (尚、”リンクの編集”を必要としないエラー回避方法についてです)
を解説します。

    §5. KB328440 に基づいた分類での解説
        5-1.  アドインブック と 同一フォルダに ユーザーブックを作成する場合
        5-2.  ルート から アドインブック が在るフォルダへの経路上にユーザーブック を作成する場合
        5-3.  ルート から アドインブック が在るフォルダへの経路から外れる位置にユーザーブック を作成する場合
        5-4.  アドインブック とは別のドライブに ユーザーブック を作成する場合
    §6. 実務的なアドインの格納場所に基づいた解説
        6-1.  アドインブック を 「ユーザー アドインフォルダ(Addins フォルダ)」 に格納している場合
        6-2.  アドインブック を 「Officeアプリケーション アドインフォルダ(Library フォルダ)」 に格納している場合
        6-3.  アドインブック を 「スタートアップフォルダ(XLSTART フォルダ)」 に格納している場合
        6-4.  アドインブック を 「ネットワーク」 に格納している場合
        6-5.  アドインブック を 「各PC共通パスのフォルダ」 に格納している場合
        6-6.  「デスクトップに作成・保存したユーザーブック」 を他の場所へ移動する場合(アドインブックの格納場所による違い)



[ この場所へのリンク ] [ Top へ戻る ]

§5. KB328440 に基づいた分類での解説
5−1.アドインブック と 同一フォルダに ユーザーブックを作成する場合 



  ユーザーブックを『アドインブックと同じフォルダ』に
  作成すると、リンク情報にはパスが記録されません
  記録されるのはリンク対象となるアドインのファイル名
  のみです。

  この場合、エクセル内の外部参照式は自ブックと同一
  フォルダにアドインブックが在るものとして機能します。

  したがって、ユーザーブックのみを別フォルダ・別ドラ
  イブ・ネットワークPCへ移動させると、必ずリンクエラー
  となります。


  移動・コピーする際は、アドインブックとペアで行なう
  必要があります。その状態で、利用後に保存し直して
  もリンク情報の記録内容は変わりません。
 

(注) Excel2013では、相対パス記録される筈のケースなのに絶対パスで記録されてしまう
     例外事象があります(§9 を参照)。




【 別PC へ移動する場合 】
    上で解説したように、アドインブックと共に移動すれば、移動先のPCで問題なく利用できます。
    その状態で、利用後に保存し直してもリンク情報の記録内容は変わりません。

【 ネットワーク上への移動 】
    上で解説したように、アドインブックと共に移動すれば、
          [ 自ユーザー・他の接続中ユーザー ]
    の何れからのアクセスでも問題なく利用できます。その状態で、利用後に保存し直しても
    リンク情報の記録内容は変わりません。


[ この場所へのリンク ] [ Top へ戻る ]

5−2. ルートからアドインブックが在るフォルダへの経路上にユーザーブックを作成する場合 
          ユーザーブック(UserBook.xls) の側からみた表現をすると、
                『ユーザーブック の在るフォルダ』 から連なる下位のフォルダ
          に参照する相手ブック (この例では AddinBook.xla) が在るという状態です。


      下図では AddinBook.xla が File2 , MyFile1 フォルダに格納されている場合も同様です。

 ユーザーブックを
      『ルート(ドライブ直下)からアドインブックが
        あるフォルダまでの経路(図の赤点線内)』 上
        (左図では C:\ , MyDir1 )
 に作成すると、リンク情報には
      「ユーザーブックが在る
       フォルダの直下以降が相対パス
 で記録されます。

 ユーザーブックのみを別フォルダ・別ドライブ・ネットワーク
 PCへ移動させると、必ずリンクエラーとなります。


 移動・コピー先には、作成時と同じ相対パス位置にアド
 インブックが既に格納されている必要があります。
 もしくは、アドインブックも相対パス位置を保ったまま(相対
 パス経路上のフォルダ(空フォルダで良い)も)ペアで移動・
 コピーを行なう必要があります。その状態で、利用後に保存
 し直してもリンク情報の記録内容は変わりません。



(注) Excel2013では、相対パス記録される筈のケースなのに絶対パスで記録されてしまう
     例外事象があります(§9 を参照)。




【 別PC へ移動する場合 】
    上で解説したように、アドインブックと共に移動すれば、移動先のPCで問題なく利用できます。
    その状態で、利用後に保存し直してもリンク情報の記録内容は変わりません。

【 ネットワーク上への移動 】
    上で解説したように、アドインブックと共に移動すれば、
           [ 自ユーザー・他の接続中ユーザー ]
    の何れからのアクセスでも問題なく利用できます。その状態で、利用後に保存し直しても
    リンク情報の記録内容は変わりません。


[ この場所へのリンク ] [ Top へ戻る ]

5−3. ルートからアドインブックが在るフォルダへの経路から外れる位置
        ユーザーブックを作成する場合 



 ユーザーブックを
     『ルート(ドライブ直下)からアドインブックが
      あるフォルダまでの経路(図の赤点線内)』
      から外れる位置
      (左図では MyFile1 , MyDir2 , Files2 ) 
に作成すると、リンク情報には
     「ドライブを除いたルートからのフルパス
 で記録されます(ドライブに対する相対パスです)。

 同一ドライブ内であれば、どのフォルダへもユーザー
 ブックのみで移動が可能です。その状態で、利用後
 に保存し直した場合、移動先によってリンク情報の記
 録内容が変わる場合があります。

 赤点線内から外れる位置への移動ではリンク情報は変
 わりません。赤点線内 または アドインと同一フォルダへ
 の移動では 5-2 または 5-1 のパターンに書き換わります。

 別ドライブ・ネットワークPCへユーザーブックのみを移
 動させると、必ずリンクエラーとなります。



別ドライブ・ネットワークPCへの移動・コピー先では、移動先ドライブでルートからのリンクパス位置にアドインブック
が既に格納されている必要があります。もしくは、アドインブックもリンクパス位置を保ったまま(リンクパス経路上の
フォルダ(空フォルダで良い)も)ペアで移動・コピーを行なう必要があります。その状態で、利用後に保存し直しても
リンク情報の記録内容は変わりません。

(注) Excel2013では、相対パス記録される筈のケースなのに絶対パスで記録されてしまう
     例外事象があります(§9 を参照)。




【 別PC へ移動する場合 】
    上記解説のD/E ドライブへの移動ケースと同じです。
    アドインブックも共にパス位置を維持しつつ移動すれば、移動先のPCで問題なく利用できます。
    その状態で、利用後に保存し直してもリンク情報の記録内容は変わりません。

【 ネットワーク上への移動 】
    上記解説のD/E ドライブへの移動ケースと同じです。
    アドインブックも共にパス位置を維持しつつ移動すれば、
            [ 自ユーザー・他の接続中ユーザー ]
    の何れからのアクセスでも問題なく利用できます。その状態で、利用後に保存し直しても
    リンク情報の記録内容は変わりません。


[ この場所へのリンク ] [ Top へ戻る ]

5−4. アドインブックとは別のドライブに ユーザーブックを作成する場合 


 ユーザーブックを
       『アドインブックとは別のドライブ』
 に作成すると、リンク情報には
       「file プロトコルで
        ドライブが付いたルートからのフルパス
 で記録されます。

 ユーザーブックのみを、どこへ移動させても、リンクパスが「ドラ
 イブの付いたフルパス」なので、『Cドライブのアドインブック』を正
 しく認識できます。したがって、リンクエラーにはなりません(アド
 インブックの移動は必要ない)。

 ただし、ユーザーブックの移動先が
      アドインブックが在るドライブ内のフォルダ(図ではCドライブ
 の場合、利用後に保存し直すと、移動先によって下図のようにリンク
 情報が書き換わりますそれ以後は前述した「5-1 , 5-2 , 5-3」項
 の扱いになりますので要注意です)。





【 別PC へ移動する場合 】
    上記解説のC/D/E ドライブへの移動ケースと同じです。
    アドインブックもパス位置を維持しつつ共に移動すれば、移動先のPCで問題なく利用できます。
    その状態で、利用後に保存し直した際は、上記と同様、Cドライブへの移動ケースではリンク
    情報が書き換わりますので要注意です。

【 ネットワーク上への移動 】
     〜 自PCのユーザーからのアクセス 〜
        上記解説のE ドライブへの移動ケースと同じです。ユーザーブックのみでの移動が可能で、
        リンクエラーにはなりません。

    〜 他の接続中ユーザーからのアクセス 〜
        リンクパスを各ユーザーのPC内のCドライブと認識する為、当然 リンクエラーとなります。
        他の接続中ユーザーからのアクセスも考慮する場合には、各ユーザーのPC内のリンクパス位置
        にアドインブックをコピーする必要があります。


[ この場所へのリンク ] [ Top へ戻る ]

§6. 実務的なアドインの格納場所に基づいた解説
6−1. アドインブックを「ユーザー アドインフォルダ(Addins フォルダ)」に格納している場合


ユーザーアドインフォルダとは、エクセルの「名前を付けて保存」ダイアログで、ファイルの種類を
      【 Microsoft Excel アドイン ( *.xla , *.xlam) 】
に切り換えた時に自動的に既定の保存先として表示される
      [ C:\Windows\Application Data\Microsoft\AddIns ]    (Win98SE/Excel2000の場合)
というフォルダです。
OS によってパスが異なります。また、WinXP などではユーザーアカウント名が間に入ります。
          [Windows95/98/Me ] C:\Windows\Application Data\Microsoft\Addins
          [Windows NT4 ]       C:\Windows\Profiles\ユーザーアカウント名\Application Data\Microsoft\Addins
          [Windows 2000/XP ] C:\Documents and Settings\ユーザーアカウント名\Application Data\Microsoft\Addins
          [Windows Vista/7/8 ]   C:\Users\ユーザーアカウント名\AppData\Roaming\Microsoft\Addins
[ MsgBox  Application.UserLibraryPath ] というマクロを実行すればパスが判ります。




『ユーザーアドインフォルダ(Addins フォルダ)』に格納されているワークブックを外部参照している場合に
記録されるリンク情報は【通常ファイル】と同じです

したがって、ユーザーブックの作成位置により、
    (a) 『アドインブックと同じドライブ』     ⇒ 「ドライブが付かないルートからのフルパス(ドライブの相対パス)」
    (b) 『アドインブックとは別のドライブ』 ⇒ 「file プロトコルでドライブが付いたルートからのフルパス」
としてリンク情報が記録されます(尚、Addins フォルダへ至る経路上にユーザーブックを格納する事は
ないでしょうから、それについては割愛します)。

ユーザーファイルを最も多く作成・格納するのが、「マイドキュメント」であるという事を考えれば、この事は、
    (a) 「マイドキュメント」が既定の場所である Cドライブ にある
のか、それとも、
    (b) 「マイドキュメント」を カスタマイズして Dドライブ等に移してある
のか、という事にも直結する問題でしょう。



ユーザーブックを
      『マイドキュメント(アドインの格納場所と同じ Cドライブ
に作成すると、リンク情報には
      「"ドライブを除いたルートからのフルパス(ドライブの相対パス)
で記録されます。

ユーザーブックのみ を、
    (a) マイドキュメント内の別フォルダ(図ではCドライブ)へ移動
    (b) マイドキュメントと同じドライブ内の他のフォルダ(図ではCドライブ)へ移動
    (c) マイドキュメントとは異なるドライブ内のフォルダ(図ではDドライブ)へ移動
    (d) 別PCへ移動
    (e) ネットワーク上への移動(自ユーザーからのアクセス)
    (f) ネットワーク上への移動(他の接続ユーザーからのアクセス)
    (g) 自PCの別ユーザー/別OSでユーザーブック(作成位置のまま)にアクセス

の各々の場所へ移動させた場合の結果は以下のようになります。

(a) および (b)
    アドインブックの場所が、Cドライブ下のリンクパス位置(つまりは正しいアドインブックの位置)
    として認識されます。つまり、どこへ移動させても問題なく使えます
    デスクトップ への移動も、ここに含まれます。

(c)
    アドインブックの場所が、Dドライブ下のリンクパス位置(そこにアドインブックは無い)として認識
    されます。つまり、必ずリンクエラーとなります
    通常、Dドライブ下に「Documents and Settings\……\Addins」のシステムパスと同じフォルダ配置
    を作るような運用はしないでしょうから、エラーは回避できません。

(d)
    例え、そのPCのAddinsフォルダにアドインブックが格納済みであっても、OSの違い・ユーザー名の
    違いによって、記録されているリンク情報のパスと一致しません。つまり、必ずリンクエラーとなります

(e) および (f)
    アドインブックの場所が、移動先のネットワークPC 内と認識されますし、(d) と同様にネットワークPC
    内の Addinsフォルダのパスも異なります。つまり、必ずリンクエラーとなります

(g)
    (d) の場合と同様です。つまり、必ずリンクエラーとなります




ユーザーブックを
      『マイドキュメント(アドインの格納場所とは異なる Dドライブ
に作成すると、リンク情報には
      「"ドライブが付いたルートからのフルパス
で記録されます。

ユーザーブックのみ を、
    (h) マイドキュメント内の他のフォルダ(図ではDドライブ)へ移動
    (j ) マイドキュメントと同じドライブ内の他のフォルダ(図ではDドライブ)へ移動
    (k-1) マイドキュメントとは異なるドライブ内のフォルダ(図ではEドライブ)へ移動
    (k-2) マイドキュメントとは異なるドライブ内のフォルダ(図ではCドライブ)へ移動(アドインの在るドライブ)
    (m) 別PCへ移動
    (n) ネットワーク上への移動(自ユーザーからのアクセス)
    (p) ネットワーク上への移動(他の接続ユーザーからのアクセス)
    (q) 自PCの別ユーザー/別OSでユーザーブック(作成位置のまま)にアクセス

の各々の場所へ移動させた場合の結果は以下のようになります。

(h) および (j ) および (k-1)
    リンク情報にドライブが付いていますので、自PCのどこへ移動させても、正しくアドインブックの位置
    が認識されます。つまり、どこへ移動させても問題なく使えます

(k-2)
    リンク情報にドライブが付いていますので、自PCのどこへ移動させても、正しくアドインブックの位置
    が認識されます。つまり、どこへ移動させても問題なく使えます
    ただし、ユーザーブックを更新/保存しますと「ドライブが付かないルートからのフルパス(ドライブの
    相対パス)」でリンク情報が書き換わりますので、それ以降は前述の (a) 〜 (g) の扱いとなります。
    デスクトップ への移動も、ここに含まれます。

(m)
    例え、そのPCのAddinsフォルダにアドインブックが格納済みであっても、OSの違い・ユーザー名の
    違いによって、記録されているリンク情報のパスと一致しません。つまり、必ずリンクエラーとなります

(n) および (p)
    アドインブックの場所が、移動先のネットワークPC 内と認識されますし、(m) と同様にネットワークPC
    内の Addinsフォルダのパスも異なります。つまり、必ずリンクエラーとなります

(q)
    (m) の場合と同様です。つまり、必ずリンクエラーとなります


[ この場所へのリンク ] [ Top へ戻る ]

6−2. アドインブックを「Officeアプリケーション アドインフォルダ(Library フォルダ)」に格納している場合

Officeアプリケーション アドインフォルダとは、【分析ツールアドイン】が格納されている
    [ C:\Program Files\Microsoft Office\Office\Library ]   (Win98SE/Excel2000の場合)
というフォルダです。
Office\Library の部分は、Excel のバージョンによって異なります。
          Excel2000 : Office\Library     , Excel2002 : Office10\Library , Excel2003 : Office11\Library 
          Excel2007 : Office12\Library , Excel2010 : Office14\Library , Excel2013 : Office15\Library
Excel2013 では、インストール方法によって パス が異なりますので注意が必要です。
          C:\Program Files\Microsoft Office\Office15\Library    (Windows インストーラーでインストール)
          C:\Program Files\Microsoft Office 15\Root\Office15\Library     (プリインストール版 , Click-To-Run)
Windows(64bit) の場合には、Excel が 32bit/64bit の違いでも パス が異なりますので注意が必要です。
          32bit 版 Excel : C:\Program Files (x86)\....  ,  64bit 版 Excel : C:\Program Files\....  
[ MsgBox  Application.LibraryPath ] というマクロ を実行すれば、そのPCでのパスが判ります。
(要 注意事項)
      Windows Vista 以降 では、このフォルダ は 『UAC (ユーザーアカウント 制御) 』 管理下のフォルダ ですので、
      このフォルダ に ファイル を保存する際には UAC を解除する必要があります
      参考 : @IT Tips / Windowsのユーザー・アカウント制御(UAC)を一時的に無効にする



『Officeアプリケーション アドインフォルダ(Library フォルダ)』に格納されているワークブックを外部参照している
場合に記録されるリンク情報は【通常ファイル】とは異なります
      ・ パスは記録されず、ファイル名のみが記録されます
      ・ パスの代わりに、Type 句にて『そのPC ( Excel ) の Library フォルダ』と指定されます
      ・ ユーザーブックの作成場所 また 移動先に係わらず、記録されるリンク情報は上記の2つで変わりません。

『パス無しで、そのPC ( Excel ) の Library フォルダ』という指定により、下記のように、リンクエラーのトラブル
から解放されます。
      (a) ユーザーブックをどこに作成・格納し、その後にどこへ移動させてもリンクエラーにはなりません。
      (b) ひとつのユーザーブックを異なるバージョンのエクセルで開いた場合(マルチインストール)でも、参照先が
          そのバージョンに応じた Library フォルダ として認識されますのでリンクエラーにはなりません。
      (c) 別ユーザー もしくは 別OS(マルチOS)下でも、その環境の Library フォルダとして認識されますので、リンク
          エラーにはなりません。
      (d) ユーザーブックを他のPCへ移動させても、参照先がそのPCのエクセルの Library フォルダ として認識され
          ますのでリンクエラーにはなりません。
      (e) ユーザーブックをネットワーク上へ移動させた後に、自ユーザー もしくは 接続している他ユーザーがその
          ユーザーブックを開いた場合は、各々のユーザーの環境の Library フォルダとして認識されますので、リンク
          エラーにはなりません。

尚、当然のことですが、(b)〜(e)の場合、各々の環境(Excel バージョン・OS・ユーザー 等)下の Library
フォルダにアドインブックが既に格納されている事(コピー済)が前提となります。

(対照的に、ユーザーアドインフォルダ( Addins )の場合には、各々の Addins フォルダ内にアドインブックが格納済み
であったとしても、記録されているパスの解釈によって、前述のようにリンクエラーが発生します)

ただし、Library フォルダがUAC(ユーザーアカウント制御)管理下のフォルダである為、そこにファイルを保存する
には、管理者ユーザーによるUAC解除が必要となります。企業環境下などでは安易にLibraryフォルダ内のアドイン
ブックを更新できないというのが唯一のネック
でしょう。









[ この場所へのリンク ] [ Top へ戻る ]

6−3. アドインブックを「スタートアップフォルダ(XLSTART フォルダ)」に格納している場合

スタートアップフォルダ内のワークブックは、エクセルの起動時に自動的に開かれます。そのパスは
      [ C:\Windows\Application Data\Microsoft\Excel\XLSTART ]    (Win98SE/Excel2000の場合)
となっています。
OS によってパスが異なります。また、WinXP などではユーザーアカウント名が間に入ります。
        [Windows95/98/Me ] C:\Windows\Application Data\Microsoft\Excel\XLSTART
        [Windows NT4 ]       C:\Windows\Profiles\ユーザーアカウント名\Application Data\Microsoft\Excel\XLSTART
        [Windows 2000/XP ] C:\Documents and Settings\ユーザーアカウント名\Application Data\Microsoft\Excel\XLSTART
        [Windows Vista/7/8 ]   C:\Users\ユーザーアカウント名\AppData\Roaming\Microsoft\Excel\XLSTART
[ MsgBox  Application.StartUpPath ] というマクロを実行すればパスが判ります。




「スタートアップ(XLSTART フォルダ)」フォルダは、
      「Officeアプリケーション アドインフォルダ(Library フォルダ)」
と同じく、特殊フォルダとしてリンク情報が作成されます(Type 句も値が異なるだけ)。

ユーザーブックの移動に係わる内容も Library フォルダと同じですので、詳細は Library フォルダの項を
参照して下さい。


(注意事項)
スタートアップ フォルダは下記の2箇所に在ります。このフォルダのどちらに配されたワークブックも、
Excel の起動と同時に自動的に開かれます。
      (a) C:\Documents and Settings\ユーザーアカウント名\Application Data\Microsoft\Excel\XLSTART   (WindowsXP)
      (b) C:\Program Files\Microsoft Office\Office14\XLSTART   (Excel2010)


しかし、リンク情報に [ Type="xlExternalLinkPath/xlStartUp" ] として記録されるのは (a) のフォルダです。
つまり、(a) のフォルダでは固定パスが記録されないので、Library フォルダと同様に、リンクエラーになりません。
[ Application.StartUpPath ] で得られるフォルダも (a) の方です。
      Type="http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlStartUp"
      Target="AddinBook.xla"


(b) のフォルダの場合には、通常ファイルとしてリンク情報が記録されます。つまり、ユーザーブックの作成場所
および移動先によって、リンクエラーとなります。
      Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath"
      Target="file:///C:\Program Files\Microsoft Office\Office14\xlstart\AddinBook.xla"
      または    Target="/Program Files/Microsoft Office/Office14/xlstart/AddinBook.xla"


[ この場所へのリンク ] [ Top へ戻る ]

6−4. アドインブックを「ネットワーク」に格納している場合



ネットワーク上にアドインブックを置いている場合、ユーザーブックをどこのドライブ(C or D or 他)に作成しても、
リンク情報には『UNC パスネットワークPC名が付いたルートからのフルパス)』で記録されます。その為、作成
したユーザーブックをどこへ移動させても、正しくアドインブックの位置を認識できるので、リンクエラーにはなりま
せん。

尚、アドインブックをネットワークドライブ(ネットワーク先にドライブレターを割り当てている)経由で開いている場合
には、リンク情報のパスにはネットワークドライブで記録されます。当然ですが、このユーザーブックを他PCへ移動
する場合、その移動先PCでも同じドライブレターがネットワークに割り当てられていないとリンクエラーになります(異
なるドライブレターを割り当ててている or ドライブレターを割り当てていない)。


ユーザーブックをネットワーク上へ移動させても同じくリンクエラーにはなりません。ただし、ネットワーク上に移動した
場合には、アドインブックも同じネットワーク上に在る為、ユーザーブックを更新&保存するとリンク情報が書き換わり
ます(5-1 , 5-2 , 5-3 参照)。




[ この場所へのリンク ] [ Top へ戻る ]

6−5. アドインブックを「各PC共通パスのフォルダ」に格納している場合





各PCで共有して遣り取りするワークブックを作成する際にリンクエラーを回避する目的で、ユーザー名やOS等に起因する
パスの違いに左右されない
位置(ドライブ直下など)に、アドインなどの共通して参照するワークブックを配置するという運用
(当然、各PCで同じ場所にアドインなどを格納済みという前提)を行なっている場合もありますね。

その場合、記録されるリンク情報は、ユーザーブックの(初期)作成場所により上表のようになります。そのユーザーブックを
他の場所へ移動させた場合には、リンクエラーの有無は下記のようになります。

(a) および (b) および (c)
      ドライブが付かないルートからのフルパス(ドライブの相対パス)なので、ユーザーブックの移動先によってリンクエラー
      になる場合がある。
          ・ 『Cドライブ内 , デスクトップ , 他PCのCドライブ内』への移動はOKです。

          ・ 『Dドライブ , C/Dドライブ以外 , ネットワークフォルダ , 他PCのCドライブ以外』への移動では、
            移動先ドライブ下にアドインブックが在ると認識されるのでリンクエラーになる


(d) および (e)
      ドライブが付いたルートからのフルパスなので、ユーザーブックを、どこへ移動させてもリンクエラーにはならない
      『Dドライブ内・Cドライブ・C/Dドライブ以外・ネットワークフォルダ・他PCの全ドライブ』への全ての移動でOKです。

      尚、Cドライブ・デスクトップへ移動後に更新/保存すると、リンク情報が (a) (b) (c) のパターンに書き換えられます。


また、当然の事ですが、共通フォルダの位置を Dドライブ とした場合には、(a) 〜 (c) および (d) /(e) の結果が逆
なります。


他PCとの間でユーザーブックを遣り取りしても常にリンクエラーとならない為には、
      リンク情報が 『ドライブが付いたフルパス』
である方が良いので、マイドキュメント(および 他にユーザーブックを主に作成する場所)が (各PC共通して)Cドライブな
のか Dドライブなのかによって、共通フォルダをどこに置くかを決めると良いでしょう。
    ・ マイドキュメントが 各PC共通して Cドライブ ⇒ 共通フォルダは Dドライブのルート位置
    ・ マイドキュメントが 各PC共通して Dドライブ ⇒ 共通フォルダは Cドライブのルート位置


[ この場所へのリンク ]

もしくは、予め、個々のPCに
      共通フォルダ専用として小さめのパーティションをHDDに確保し、
      全PCで同じドライブレターを割り振る
というルール作りをしておけば、マイドキュメントがPCによってCドライブであったり、Dドライブであったり
バラバラでも、リンク情報は必ず『ドライブの付いたフルパス』となりますので、どのPCのマイドキュメントへ
移動しても(移動先が C: でも D: でも)リンクエラーになる事はありません。



[ この場所へのリンク ] [ Top へ戻る ]

6−6. 「デスクトップに作成・保存したユーザーブック」を他の場所へ移動する場合



デスクトップ の画面も実体は通常のフォルダです。そのパスは
      [ C:\Documents and Settings\ユーザーアカウント名\デスクトップ ]    (Win XPの場合)
となっています。
OS によってパスが異なります。また、WinXP などではユーザーアカウント名が間に入ります。
        [Windows95/98/Me ] C:\Windows\デスクトップ
        [Windows NT4 ]       C:\Windows\Profiles\ユーザーアカウント名\デスクトップ
        [Windows 2000/XP ] C:\Documents and Settings\ユーザーアカウント名\デスクトップ
        [Windows Vista/7/8 ]   C:\Users\ユーザーアカウント名\Desktop


最後に、デスクトップに作成・保存したユーザーブックを、他の場所へ移動した場合に、アドインブックの格納場所
(6−1 〜 6−5)によって、どのような違いがあるのか説明します。

(6-1) Addins フォルダ
    [ Type = "externalLinkPath" ,
      Target = "/Documents and Settings/ユーザーアカウント名/
                    Application Data/Microsoft/Addins/AddinBook.xla" (Win XP の場合) ]
    ユーザーブックの作成場所(デスクトップ)およびアドインブックの格納場所(Addins フォルダ)が共に Cドライブ
    ですので、リンク情報は『ドライブが付かないルートからのフルパス』として記録されます。
    したがって、デスクトップに作成したユーザーブックをCドライブ内で移動させる限りにおいては問題ありませんが、
    Cドライブ以外(Dドライブ等・他PC・ネットワーク)への移動では必ずリンクエラーとなります。

(6-2) Library フォルダ
    [ Type = "xlLibrary" , Target = "AddinBook.xla" ]
    ユーザーブックの作成場所がデスクトップであっても、リンク情報の内容はマイドキュメント等に作成する場合と
    変わりません(そのPC(Excel)のLibraryフォルダ指定)。
    したがって、デスクトップに作成したユーザーブックを、どこへ(他ドライブ・他PC・ネットワーク)移動させても
    リンクエラーにはなりません。

(6-3) XLSTART フォルダ
    [ Type = "xlStartup" , Target = "AddinBook.xla" ]
    ユーザーブックの作成場所がデスクトップであっても、リンク情報の内容はマイドキュメント等に作成する場合と
    変わりません(そのPC(ユーザー)のスタートアップ フォルダ指定)。
    したがって、デスクトップに作成したユーザーブックを、どこへ(他ドライブ・他PC・ネットワーク)移動させても
    リンクエラーにはなりません。

(6-4) ネットワーク( PC2\ShareDocs )
    [ Type = "externalLinkPath" , Target = "file:///\\PC2\ShareDocs\MyDir1\AddinBook.xla" ]
    リンク情報が『file: 〜形式でネットワークPC名が付いたルートからのフルパス』で記録されます。
    したがって、デスクトップに作成したユーザーブックを、どこへ(他ドライブ・他PC・ネットワーク)移動させても
    リンクエラーにはなりません。

(6-5) 各PCで共通パスのフォルダ( C:\CommonAddin )
    [ Type = "externalLinkPath" , Target = "/CommonAddin/AddinBook.xla" ]
    ユーザーブックの作成場所(デスクトップ)およびアドインブックの格納場所(共通フォルダ)が共に Cドライブ
    ですので、リンク情報は『ドライブが付かないルートからのフルパス』として記録されます。
    したがって、デスクトップに作成したユーザーブックをCドライブ内で移動させる限りにおいては問題ありませんが、
    Cドライブ以外(Dドライブ等・他PCのCドライブ以外・ネットワーク)への移動では必ずリンクエラーとなります。

    尚、共通フォルダがCドライブ以外(Dドライブ等)に設けられている場合には、
        [ Type = "externalLinkPath" , Target = "file:///D:\CommonAddin\AddinBook.xla" ]
    と、『ドライブの付いたフルパス』で記録されますので、ユーザーブックをどこへ(他ドライブ・他PC・ネットワーク)
    移動させてもリンクエラーにはなりません。



[ この場所へのリンク ] [ Top へ戻る ]

§7. ユーザーブック と アドインブック を共にネットワークPC に格納し、     (2015/5/20 追記)
        そのネットワークPC と 接続PC の双方で参照・更新を行なう場合

ブックを格納しているネットワークPCが通常のPC(ユーザーが普通に Excel を操作するPCであると共に、
ネットワーク内の共有スペースを提供するファイルサーバーも兼ねている)である場合に起きるトラブルです。

アドインブック と ユーザーブック の関係にあるブックをネットワークPC内に格納する際の位置関係(下記)
で解説します。
    (a) 同一フォルダ
    (b) 同一ドライブ(同一共有名の配下)で別フォルダ
        (b-1) ユーザーブック のフォルダの下位に、アドインブックのフォルダ
        (b-2) アドインブック のフォルダの下位に、ユーザーブックのフォルダ
        (b-3) 上記以外
    (c) 各々が別ドライブ(当然、共有名も別)

以降の図解を見て頂ければ判りますが、(a) または (b-1) の配置であれば、ネットワークPC と 他の接続PC
の双方で ブックの参照・更新を行なってもリンクエラーにはなりません

単純に、1:1の関係だけではなく、幾つものブックが互いにリンクし合っているなどの複雑な関係の場合には、
(a) の配置にしてください。


  尚、(b-2) (b-3) (c) の配置でリンクエラーが起きるのは、
        「ブックを格納しているPC」 と 「ネットワーク接続している他のPC」
        双方でブックを参照&更新
  するという運用の場合です(この項のタイトルも、そのように表記しています)。

  ブックを格納しているPCでは(ローカルに)参照&更新しない場合(ファイルサーバー専用等)には、
        リンク情報が常に下図のピンク枠内の内容で固定
  である為、リンクエラーにはなりません。



(a) 同一フォルダ


(b) 同一ドライブ(同一共有名の配下)で別フォルダ
    (b-1) ユーザーブック のフォルダの下位に、アドインブックのフォルダ
    つまり、『ルートからアドインブックまでの経路上』にユーザーブックが在る


(b) 同一ドライブ(同一共有名の配下)で別フォルダ
    (b-2) アドインブック のフォルダの下位に、ユーザーブックのフォルダ
    (b-3) b-1/b-2以外
    つまり、『ルートからアドインブックまでの経路から外れる位置』にユーザーブックが在る






(c) 各々が別ドライブ(当然、共有名も別)





[ この場所へのリンク ] [ Top へ戻る ]

§8. 「KB416397:
          Excel でネットワーク上のファイルを開くと外部参照数式が正しくない」の図解     (2015/5/20 追記)

    「KB416397 : Excel でネットワーク上のファイルを開くと外部参照数式が正しくない」
        https://support.microsoft.com/ja-jp/kb/416397   ( 現在 このKB は行方不明 ( 削除? ) です )
    この KB で解説している内容を図解すると下図のようになります。




[ この場所へのリンク ] [ Top へ戻る ]

※要注意※
§9. Excel 2013/2016 における注意事項(相対パスの筈が絶対パスになる)
    (2015/7/28 追記)

      [ KB 3054770 ]    ( 2015/7/30 リリース )
      Excel 2013 でブック内のセルから別のブックを外部参照していると外部参照の情報が絶対パスで保存される 


      ( 2018/6/11 追記 )
        いつの間にか Excel 2016 では、この問題が修正されていました ( Version 1805 Build 9330.2087 で 確認 )。
        「ドキュメント検査 で 個人情報を全て削除」 を 行なっても、相対パス が 絶対パス に書き換えられる事はありません。
        Excel 2013 は 実行環境がないので未確認です


(1) Excel 2013/2016 における外部リンク記録方法の例外事項

    Excel の外部リンクルールでは、下記3パターンは『相対パス』で記録されます。これにより、ワークブックを
    他のフォルダへ移動させた場合でも、移動先で正しくリンクが繋がります。
        5-1. アドインブック と 同一フォルダに ユーザーブックを作成する場合
                  XML構造の中の externalLink1.xml.rels には [ Target="ABC.xlsx" ] という風に記録されます。

        5-2. ルート から アドインブック が在るフォルダへの経路上にユーザーブック を作成する場合
                  ユーザーブック の 側 からみた表現では、『ユーザーブック の在る フォルダ から連なる下位の フォルダ 』に
                  参照する相手ブック が在る配置です。
                  XML構造の中の externalLink1.xml.rels には [ Target="Files/ABC.xlsx" ] という風に記録されます。

        5-3. ルートからアドインブックが在るフォルダへの経路から外れる位置にユーザーブックを作成する場合
                  ドライブレターを除いたルートからのフルパスで記録されます。つまり、ドライブに対しての相対パスです
                  ドライブ間移動の場合に効果があります。同一ドライブ内での移動では絶対パスと同様の効果になります。
                  XML構造の中の externalLink1.xml.rels には [ Target="/MyDir1/Files/ABC.xlsx" ] という風に記録されます。

    しかし、Excel 2013/2016 では、ある状況下において、このルールを逸脱し、上記パターンを相対パスでは
    なく 絶対パス(ドライブレターからのフルパス)で記録します。
      XML構造の中の externalLink1.xml.rels には [ Target="file:///C:\MyDir1\Files\ABC.xlsx" ] という風に記録されます。


    その状況とは、以下の2つです( (a) または (b) の何れか)。
        (a)  [ファイルタブ/情報/ブックの検査/ドキュメント検査] で『ドキュメントのプロパティと個人情報』
              の【すべて削除】を実行する。

        (b) フォルダ(エクスプローラー)の「右クリックメニュー/新規作成」でワークブックを作成する。


   (a)  [ファイルタブ/情報/ブックの検査/ドキュメント検査] で
       『ドキュメントのプロパティと個人情報』の【すべて削除】を実行する。

 
 

    作成&保存済みの「相対パスのリンクを持つワークブック」に対して、この操作を行なうと、
    その際に
            『相対パスで記録されているリンク情報を全て絶対パスに書き換える
    という編集が施されます。
    また、その後で新たに追加する外部リンクは【全て絶対パスで記録】されます。

    ※ 「プライバシー情報の削除」 と言いながら、逆に プライバシー情報を増やしている ?
         「プライバシー保護の為、個人情報である "絶対パス" を削除する」 と言いながら、その操作により
         『相対 リンクパス が 絶対 リンクパスに書き換えられる』 という逆の結果を招いているように感じます。
         当然、書き換えた"絶対 リンクパス" には 「アカウント名」 や 「そのPC 独特のフォルダ名」 等の
         プライバシーに係わる情報が含まれている可能性があります (他 ワークブック への相対 リンク が
         無ければ、確かに言っている通りなのでしょうが … )。
         これは、検査結果に表示される 【 ブックへの絶対パス 】 という表現が相応しくない為でしょう。
         正しくは 【 ブック の保存場所 ( の フルパス ) 】 と表現すべきです。


    なお、この操作後、「ブックの検査」の場所には下記の解除リンク表示がでます。
 

    Excel2010以前で同じ操作を行なっても、このような事にはなりません。
    Excel2013で追加された機能が作用して、このような症状となります。

   
    (b) フォルダ(エクスプローラー)の「右クリックメニュー/新規作成」で
         ワークブックを作成する。
 
    (Excel アプリケーションが起動される事なく、白紙のワークブックが保存されます)

    この方法で作成されたワークブックでは、最初から外部リンクが全て絶対パスで記録
    されます。

    これは、「右クリックメニュー/新規作成」の際に引用される白紙テンプレートの初期設定
          『ファイルの保存時にプロパティと個人情報を自動的に削除する
    になっている為(上記(a)の状態)です。

    なお、この白紙テンプレートは、Excel2007〜Excel2013/2016 で同じもの(EXCEL12.XLSX )
    が使用されています。つまり、Excel2007 の時から、右クリック/新規作成で作成されるワーク
    ブックの設定は『自動的に削除』になっています。

    しかし、Excel2007/2010では『外部リンクが全て絶対パス』という事にはなっていません。
    この設定(自動的に削除)と Excel2013 で追加された機能の相互作用に起因して、この
    ような症状となります。   

      -- 白紙 テンプレート --
      ・ MSI 版インストール(通常インストール)
        C:\Windows\ShellNew\EXCEL12.XLSX
      ・ Click to Run 版インストール
        C:\Program Files\Microsoft Office 15\root\vfs\Windows\SHELLNEW\EXCEL12.XLSX
              OS ( 64bit ) & Excel ( 32bit ) の場合は "Program Files" ⇒ "Program Files (x86)"

      (補) 恐らく ブック プロパティ の 「作成者」 「最終更新者」 を未記入状態 としておく為に採られた方策なのでは
            ないでしょうか 。テンプレート は Microsoft で作成しているのですから、普通の状態で作成したものであれば、
            「作成者:Microsoft , 最終更新者:Microsoft 」 となっています。「最終更新者」 については、ワークブックを
            更新すれば、その更新ユーザーに書き換えられます。しかし、 「作成者」 については、ユーザーが 直接書き
            換えない限りは、そのままです。ユーザー が作成した ワークブック が、どれもこれも 「作成者 : Microsoft 」 と
            なっていたのでは拙いですよね。



-----------------------------------------------------------------------------------------
(2) この例外動作により起こる問題

    前述の動作により起こり得るトラブルの一例を示します。

    (@) C:\フォルダA に リンク元.xlsx と リンク先.xlsx を作成し、リンク元.xlsx に リンク先.xlsx を参照する
          外部リンクを設定します。
                  この状態では 『パス無しで "リンク先.xlsx"』 の 相対パス が記録されています
                  XML構造の中の externalLink1.xml.rels には [ Target="リンク先.xlsx" ] と記録されます。


          前記(a)の操作を行なって上書き保存します。
                  これにより、相対パス が 絶対パス に書き換わります
                  externalLink1.xml.rels には [ Target="file:///C:\フォルダA\リンク先.xlsx" ] と記録されます。


          フォルダA をコピーして C:\フォルダB を作成します。
                  フォルダB\リンク元.xlsx 内のリンク情報は [ Target="file:///C:\フォルダA\リンク先.xlsx" ] のままです。

          その結果、フォルダB\リンク元.xlsx の外部リンクが、元の位置である フォルダA\リンク先.xlsx を
          参照します(Excel2010までは、相対パスのままなので、フォルダB\リンク先.xlsx を参照します)。

          『リンクの編集』にて フォルダB\リンク先.xlsx に修正して保存した場合、記録されるのは、やはり
          絶対パスですので、「フォルダC をコピー作成」すれば先程と同じ事になります。
                  externalLink1.xml.rels には [ Target="file:///C:\フォルダB\リンク先.xlsx" ] と記録されます。

    (A) Excel2010 以前で、新規ブックの作成を「右クリックメニュー/新規作成」で行なっていた。
          Excel2013/2016 にバージョンアップ後、以前と同じ操作・運用をしているが、ユーザー側で何も特別な
          設定・操作をしていないのに、【外部リンクが全て絶対パス】になる。

    (B) 外部リンクを持つワークブックと、そのリンク先ワークブックをひとつのフォルダーに収めたものを作成する。
          その納品にあたって、開発環境におけるプライバシー情報を除く為に前記(a)の操作を行なう。
          発注した顧客のPCにフォルダごとワークブックをインストールして、そのワークブックを開くと、リンク先が
          【開発会社のPC内のパス】になっている(Excel2010までならば、この作業フローで何ら問題は起きない)。

-----------------------------------------------------------------------------------------
(3) プライバシーモードの解除

    前記(a)および(b)のワークブックは、[ファイルタブ/情報/ブックの検査] の解除リンクの部分をクリックする
    事により、プライバシーモードを解除できます。
 

    その後で追加される外部リンクについては、相対パスで記録可能なものは相対パスで記録されます。

    しかし、既に絶対パスで記録されている(書き換えられている)リンクを自動的に相対パスへと戻す事はでき
    ません。『リンクの編集』ダイアログでリンク先を変更する必要があります。

    (補) ワークブック を 初期作成場所 から全く移動させていない場合には、そのまま保存すれば、相対パス で記録可能なものは
          相対パス に書き換えられます。
          しかし、ワークブック を 初期作成場所 から移動している場合には、絶対パス として初期作成時のままになっている リンク を、
          移動先の場所に応じた参照先の ワークブック に 『 リンクの編集 』 で変更する必要があります。

-----------------------------------------------------------------------------------------
(4) 回避策

    (a) [ファイルタブ/情報/ブックの検査/ドキュメント検査] について

        このコマンドを使用しない。
            ブックプロパティの項目はマニュアルで個別にクリアする。
            但し、自動記録項目(最終更新者名・ドキュメントの場所 など)は消せない。

        『このコマンドの実行&即解除 ⇒ 即保存』の一連の操作を行なう。
            (@) ブックプロパティをコマンドで一括クリアする。
            (A) 解除後に即保存し直す事で、コマンドにより絶対パスに書き換えられた外部リンクを再び相対
                  パスに戻します(ワークブックを移動していないので、相対パスでリンク可能なものは保存時に
                  自動的に相対パスに書き換わります)。
                  但し、自動記録項目(最終更新者名・ドキュメントの場所 など)は一括クリアにより、一度は消え
                  ますが、解除&保存の際に再び自動的に書き込まれます(作成者はクリアされたままです)。


    (b) 「右クリックメニュー/新規作成」について

        このコマンドを使用しない。
            Excel アプリケーション内の「新規作成」で白紙ブックを作成する。

        毎回、即 プライバシーモードを解除する。
            このコマンドで新規作成後には、直ちにそのワークブックを開いて、何かのデータを書き込む前に
            プライバシーモードの解除を行ない、上書き保存する。

        テンプレートを差し替える。
            ユーザー側で以下の手順で差し替える。
            (@) Excel を起動して、Excel 内のコマンドで新規の白紙ブックを開く。
            (A) [ファイルタブ/情報/ブックの検査/ドキュメント検査] で『ドキュメントのプロパティと個人情報』
                  の【すべて削除】を実行する。
            (B) 解除リンクの【これらの情報をファイルに保存できるようにする】をクリックしてプライバシーモード
                  を解除する。
            (C) Excel12.xlsx の名前で任意の場所に保存する。
            (D) 下記フォルダの EXCEL12.XLSX を EXCEL12_OLD.XLSX にリネームし、代わりに(C)で作成
                  したExcel12.xlsx をフォルダにコピーする。

                補 : (A) & (B) の操作でプロパティの 『作成者』 をクリアしています。 『最終更新者/ファイルの場所』 が残りますが、
                      このテンプレートを使って作成(右クリック/新規作成)したワークブックを編集・更新すれば、そのユーザーの名前/
                      更新時のロケーション に置き換えられます。

                -- 白紙 テンプレート --
                ・ MSI 版インストール(通常インストール)
              C:\Windows\ShellNew\EXCEL12.XLSX
                ・ Click to Run 版インストール
              C:\Program Files\Microsoft Office 15\root\vfs\Windows\SHELLNEW\EXCEL12.XLSX
                    OS ( 64bit ) & Excel ( 32bit ) の場合は "Program Files" ⇒ "Program Files (x86)"
                尚、どちらも UAC (ユーザーアカウント制御) 管理下の フォルダ となりますので、UAC を一時的に解除する必要があります。
                参考 : @IT Tips / Windowsのユーザー・アカウント制御(UAC)を一時的に無効にする

-----------------------------------------------------------------------------------------
(5) この問題の原因

      [ KB 3054770 ]    ( 2015/7/30 リリース )
      Excel 2013 でブック内のセルから別のブックを外部参照していると外部参照の情報が絶対パスで保存される 


      ( 2018/6/11 追記 )
        いつの間にか Excel 2016 では、この問題が修正されていました ( Version 1805 Build 9330.2087 で 確認 )。
        「ドキュメント検査 で 個人情報を全て削除」 を 行なっても、相対パス が 絶対パス に書き換えられる事はありません。
        Excel 2013 は 実行環境がないので未確認です


    Excel2010までは『プロパティと個人情報を自動的に削除する』の設定を行なっても、このようなトラブル(相対
    パスの筈が絶対パスになる)は起こりません。これは Excel2013/2016 特有の問題です。

    『プロパティと個人情報を自動的に削除する』の設定で削除される(保存・記録されない)情報項目に Excel2013
    から「ドキュメントの場所」という項目が追加されています(画面上では 絶対パス , ブックへの絶対パス という
    表記がされています)。

    ---- Excel2010 ----



    ---- Excel2013/2016 ----



    参考 : ブックを検査して非表示のデータと個人情報を削除する  ( 英文
              ドキュメント検査で見つけて削除できる情報/ドキュメントのプロパティと個人情報
                  ・ (Excel 2013) ドキュメントの場所。
                    [すべて削除] をクリックすると、既存のドキュメントの場所がファイルから削除されます。
                    Excel 2013 を閉じてファイルをもう一度開くまで、保存中にドキュメントの場所がファイル
                    に追加されることはありません。

    "既存のドキュメントの場所"(英文 "the existing document location")という訳語は判り難い表現ですが、
    要は『自ブックの保存場所』の事です。この項目は、「ドキュメント検査」ダイアログで "ブックへの絶対パス"
    と表記されてます(英文:Absolute path to the workbook )。

    この項目はワークブックの XML 構造の中で [ xl > workbook.xml ] 内の下記エレメントに記録されています。
    ( 参考 : Digital Forensics Stream / MS Excel 2013 Last Saved Location Metadata
      <mc:AlternateContent>
        <mc:Choice>
           <x15ac:absPath url="C:\MyDir1\Files\" >
← ディレクトリのみ、ファイル名は含まず


    なお、『プロパティと個人情報を自動的に削除する』の場合、ワークブックの XML 構造の中で
    [ xl > workbook.xml] 内の下記エレメントに
      <workbookPr filterPrivacy="1" >
    と記述されます(解除の場合は記述なし)。



    ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
    ※    ここから先は、私が個人的に想定した原因に基づいた内容です。                ※
    ※    Microsoft の見解ではありませんし、それが事実なのか否かも判り                   ※
    ※    ませんので、その点を了解した上でお読みください。                                   ※
    ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※


   
  Excel2013/2016 では
        「ドキュメントの場所(自ブックのパス)を記録しない」
  という動作が様々な箇所・機能に広く影響を及ぼす事を考慮した結果、より安全な方策として
        「内部的に【未保存の新規作成ブック】と同じ状態にする」
  という方法で実装しているのではないかと思われます。

  つまり、Excel の各機能が、Excel のコアシステムに「自ブックのパスは?」と問いかけた際に
      --- Excel2010以前 or Excel2013/2016 & filterPrivacy="0" ---
          新規作成&未保存時なら Unknown
          保存済みならば保存場所のパス(多分OSから取得するものを渡す)
      --- Excel2013/2016 & filterPrivacy="1" ---
          『常に Unknown (保存済みでも)』が返ってくる

  これにより、Excel2013/2016 では filterPrivacy="1" のフラグが立つと、プロパティの書き込み時
  だけでなく、常に自ブックのパスを認識しなくなる(Unknown )のでしょう。


    この想定に基づけば、Excel2013/2016 での例外動作を下記のように説明する事ができます。

    --- 相対パスで記録される筈なのに絶対パスとなる理由 ---

    相対パスで記録可能か否かというのは、自ブックとリンク先ブックの位置関係に基づきます。
    ということは、自ブックのパスを認識できない状況下では可否を判断できなくなります。
    したがって、【絶対パスで記録するしかない】という事になります。

    新規作成ブックでは、保存前の状態の時、内部では外部リンクが絶対パスで管理されているのでしょうが、
    保存(即ち、自ブックのパスが確定)の際にブック間の位置関係を判断して相対パスが可能なものは相対
    パスで記録されます。

    しかし、Excel2013/2016 の filterPrivacy="1" では、保存(即ち、自ブックのパスが確定)の際にも【自ブック
    のパスを認識しない】という状態を維持している(そして、その後もずっと)為、相対パスでは記録できないも
    のと思われます。


    --- 「プロパティと個人情報の削除」により相対パスが絶対パスに書き換わる理由 ---

    相対パスで記録されているものが正しくリンクされるのは、自ブックのパスを基に相対パスを補完して内部
    的に絶対パスを作り出しているからです。

    ということは、相対パスでリンク情報を持っていても、自ブックのパスを認識できない状況下では正しくリンク
    できないという事になります。

    前記(a) の操作の後でワークブックを開くと、この状態になります。

    そこで、フラグを立てる前に(未だ自ブックのパスを認識できる内に)、相対パスを絶対パスに書き換える事
    によって、次回ブックオープン時のリンクエラーを回避しようとしているものと思われます(作成後にワーク
    ブックを移動した際への配慮が欠けているのが問題ですが、実際的に「配慮しようがない」というところなの
    でしょう)。

    Excel2010 以前では、filterPrivacy="1" により『自ブックの保存場所』を削除するという機能が組み込まれ
    ていないので、filterPrivacy="1" のフラグが立っても、このような事は起きません。



[ この場所へのリンク ] [ Top へ戻る ]

§10. 「KB 2808316 : Office 製品で UNC としてネットワーク マップされた
          ドライブのハイパーリンク を解決します」の 和訳修正 
    (2015/9/30 追記)

      KB2808316: Office 製品で UNC としてネットワーク マップされたドライブのハイパーリンクを解決します 
      上記は本記事の主題である『外部参照』ではなく、『ハイパーリンク』に関する KB ですが、
      相変わらず機械翻訳が判り難いものになっていますので、和訳し直してみます。

    下図の【右下の図】が、上記の KB で触れている状況です。
    ネットワークドライブ経由で挿入したハイパーリンクの筈なのに、マウスを合わせた時にポップアップする
    チップテキスト(ツールヒント)には 【UNC パスで表示される】 という問題です。  


 
  KB 2808316 : https://support.microsoft.com/ja-jp/kb/2808316和訳修正  

  --- タイトル ---
  Office 製品ではネットワーク ドライブのハイパーリンク は UNC として作成されています。

  --- 現  象 ---
  ユーザーが ネットワーク ドライブ に在る Office 製品の ファイル への ハイパーリンク を挿入した後、ハイパーリンク の
  表示 テキスト は ネットワークドライブ の パス になりますが、リンク そのものは UNC パス として解釈されています
  例えば、Excel で [ 挿入 > ハイパーリンク ] を クリック した場合、ユーザーはファイル を選択する事を求められます。
  ユーザーが ネットワーク ドライブ に在る ファイルへ移動し、そのファイル への ハイパーリンク を挿入した場合、ネット
  ワーク ドライブ の パス ではなく、UNC パス 経由で、その ファイル への ハイパーリンク が作成されます。
  リンク が挿入された後に、その リンク の上に マウスポインター をもっていくと、ファイル への リンク の作成で UNC に
  よる フルパス が使われていることを確認できます

  --- 原  因 ---
  原因は Office 製品が ファイル への ハイパーリンク を作成する方法にあります。
  たとえ、ハイパーリンク テキスト に ネットワーク ドライブ による場所が表示されていても、Office製品 は ファイル への
  リンク を UNC パス で作成しており、ネットワーク ドライブ は使用していません。

  --- 解決方法 ---
  これについての解決方法はありません。
  ファイルが UNC 経由 あるいは ネットワークドライブ経由の どちらで 開かれるのかによって、そのファイルの挙動に
  違いが起こるかもしれないという混乱を避ける為に UNC パス で ハイパーリンク を挿入することをお勧めします。






  Home     Back Page     Next Page

ロゴ(ゴールド)   ロゴ(ゴールド)

角田 桂一 Mail:addinbox@h4.dion.ne.jp CopyRight(C) 2015 Allrights Reserved.