プロが教えるわが家の防犯対策術!

エクセル2010です。
ABC.xlsx のあるセルは、VLOOKUP式で、XYZ.xlsのSheet1のA1:B26の表を参照しています。
ところが、リンク元であるXYZ.xlsの所在が不明です。
このような場合、ABC.xlsxが保持しているリンクの最終更新時のA1:B26の表データを取り出すにはどのようにすればよいでしょうか?

A 回答 (7件)

#5、6、cjです。

お礼欄へのレスです。

Workbooks.Open FileName は試すまでもなく、
やはりファイルをロストしているということのようですね。
# 余計な話をしてしまったみたいですみません。

ブックを開いて直後、[リンクの編集]→[更新する]と辿って
”リンクの編集”ダイアログを表示させれば、、
「エラー ソースが見つかりません」と状態を示唆して
くれていることと思います。

リンクを更新しなければ(できないですけど)、
最後に更新→保存した時のキャッシュがABC.xlsxに保持されています。
ABC.xlsxが開いている間は
キャッシュされたリンク元の配列データを参照可能です。
他のセルでも、他のシートでも、他のブックでも、
参照範囲を拡張することは不可能ですが、矩形範囲まるごと捉えられます。

例えば、適当なブック、シート、セル、にて、
2*26のセル範囲を選択してから
='リンク元パス\[XYZ.xls]Sheet1'!$A$1:$B$26
と左上セルに入力してCtrl+Shift+Enterで確定すれば、
表(キャッシュされたリンク元の配列データ)全体を確かめることもできます。
確定時に”値の更新 XYZ.xls”というファイル指定を求めるダイアログが
表示されますが、構わずキャンセルすることで確定します。
> このような場合、ABC.xlsxが保持しているリンクの最終更新時のA1:B26の表データを取り出すにはどのようにすればよいでしょうか?
もしかして、上記で答えになっていたりしますでしょうか?

ABC.xlsxが閉じていれば無効ですから、新たに数式から参照しようとしても
ファイルが見つからなくてエラーになります。

さて、疑問(不審)に思っていらっしゃる(?)
リンクの最終更新時のデータであることは、確かなのかどうか、
ということですが、
[リンク元の変更]または[リンクの解除]をしない限り
保持されたデータは維持されます。
例えば、ABC.xlsx内でXYZ.xlsを参照する数式をすべて消去して上書きしても
データは維持されているようです。
思いもよらずデータが改変されるようなことは
あり得ないように思いますけれど、どうでしょう。

差し当たり、
現状維持、復旧、捜索、と3つの道筋があるように思いますが、
現状維持なら
”リンクの編集”ダイアログから[起動時の確認]
→[〇メッセージを表示しないで自動更新を行わない]にチェックするとか
復旧については
リンクからデータを拾う上記の方法
捜索については、必要ならですけれど
同一マシン内で移動しているものが名前変更のせいで見つからない場合に向けては
そのブックを特定できるブック内のデータとしてのキーワードで検索してみるとか
既に消去されていると判断された時、必要ならサルベージを検討・依頼するとか
何処か外部のドライブに移動された前提だと、普通に人に訊いて回るとか、
こんな感じでしょうか。

長くなりました。それでも外していたらごめんなさい。
それでは、また。
    • good
    • 0
この回答へのお礼

cj_moverさん
完璧なお答え、ありがとうございます。
ほんとうにたすかりました。
これからもご指導ください。

お礼日時:2013/08/02 18:02

#5、cjです。

書き忘れました。

Sub Re8200869()
  Dim vL, v
  vL = ThisWorkbook.LinkSources(xlExcelLinks)
  For Each v In vL
    If v <> "" Then Debug.Print v
  Next
End Sub

ThisWorkbookの部分は適切なWorkbookオブジェクトに替えてください。
リンク先を一覧してみるのも役に立つことがあるかも知れません。
    • good
    • 0
この回答へのお礼

何度もありがとうございます。
Sub Re8200869 ためして見ました。
数式に表示されるフルパスと同じ文字列が取得されました。

ABC.xlsxの他のセルに =フルパス[XYZ.xls]Sheet1!A1 のように入れてみたら値が表示されました。
ただ、それが正しいかどうか自信がありません。
このようなやり方で最後にリンクを更新したときのデータを取得できるのでしょうか?

お礼日時:2013/08/01 22:59

こんにちは。

お邪魔します。

伝えられている現象だけで判断するなら、
ファイルは存在し、リンクも活きていて、
ただ、XYZ.xlsが存在するフォルダでXYZ.xlsファイルを表示できていない、
とかいう解釈も成り立つのかな?と思ったりしました。

VBAから、Workbooks.Open FileName で開けるかどうか
試してみてはどうでしょう。
XYZ.xls 存否を納得できる形でハッキリさせることはできるかと。

ほんの一例ですけれど、
「フォルダ内のファイルが正常に表示されない現象について」
http://support.microsoft.com/kb/418535/ja
ここで説明されているような条件で、
今回の問題の現象も再現できるように思いましたので。
ただ、私の方では、試す環境がありませんし、
類似の現象についての情報にも疎いので自信はあまりありませんけれども。
ただ、上の条件とは違いますけれど、
ネットワーク上(外部ドライブ)の特定のフォルダを参照、または取り込んだ時に
勝手に隠しファイルになってしまう、というような経験は
2、3、憶えがあります。こちらも再現はできませんが。

とりあえず、ちょっと目先を変えるようなレスをしてみようと思ったまま書いてみました。
    • good
    • 0
この回答へのお礼

いつもありがとうございます。

> ファイルは存在し、リンクも活きていて、

「ファイルを開くとき、更新できないリンクがあります。」とメッセージがでますのでリンクは生きてないと思います。

参考URLはXPの問題のようですがこちらはWindows7です。

ありがとうございました。

お礼日時:2013/08/01 22:51

回答No1です。


ファイルが探せないとのことでしたら「スタート」ボタンをクリックして左下隅に表示される「プログラムとファイルの検索」の窓にXYZ.とでも入力して検索してみてはいかがでしょう。どこにあるのかが分かると思いますが。

この回答への補足

ありがとうございます。
もちろん質問する前に、数式にあるパスを見ましたし、そのパスから移動したかと思い検索もかけています。でもありませんでした。
名前を変えられたか消されたとしか思えません。
それで、ABC.xlsxが最後にリンクを更新したときのXYZ.xlsのSheet1のA1:B26の表データをABC.xlsx自体から取り出せないかと質問しました。
ABC.xlsx自体がデータを保持してないとリンクが切れているのにVLOOKUP式で答えがでるはずがないですから。

さきほどためしにABC.xlsxの他のセルに =数式にあるパスのSheet1のA1 と入れてみたら表示されました。
ただ、それが正しいかどうか自信がありません。

補足日時:2013/08/01 14:17
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/08/03 08:49

ご質問の主旨は


> リンク元であるXYZ.xlsの所在が不明
だから、あらかじめ開いておけない、と言うことで良いですか?


とりあえず・・リンク元(XYZ.XLS)が開いていない状態で
リンクを設定してあるセルにフォーカスを持たせると、
添付図のように「数式バーにリンク元のフルパス(所在)」を表示してくれますよ。

「いや、そうじゃないんだよ。」と言うときは、
回答側に何か誤解があるのかもしれません。
「現状を詳細に補足」くださいませ。
「エクセルでデータのリンク元が所在不明の場」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございます。
その「数式バーに表示されたリンク元のフルパス(所在)」にないから所在不明なのです。

でもひょっとしてと試しに、別のセルに「=リンク元のフルパスとセル名」を入れセルを参照してみたら保持していると思われるデータが取り出せました。これは正しいデータなのでしょうか?

お礼日時:2013/08/01 09:57

ABC.xlsx のあるセルは、VLOOKUP式で、XYZ.xlsのSheet1のA1:B26の表を参照していて、リンク元であるXYZ.xlsの所在が不明の場合、ABC.xlsxが保持しているリンクの最新のA1:B26の表データを取り出すことはできませんが、データが見えているのであれば、そのままコピーして、形式を選択して、値のみ貼り付けてください。

この回答への補足

形式を選択して、値のみ貼り付けてしまえば現在表示しているデータだけしかわからなくなります。
ほしいのは最新でなくともいいですから、最終更新時のA1:B26の表データです。

補足日時:2013/08/01 09:52
    • good
    • 0
この回答へのお礼

有難うございます。

お礼日時:2013/08/01 12:51

予めXYZ.xlsを立ち上げた後で、ABC.xlsの操作を開始すればよいでしょう。

この回答への補足

所在が分からないのでたちあげられません。

補足日時:2013/08/01 09:49
    • good
    • 0
この回答へのお礼

有難うございます。

お礼日時:2013/08/01 12:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!