![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.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つの道筋があるように思いますが、
現状維持なら
”リンクの編集”ダイアログから[起動時の確認]
→[〇メッセージを表示しないで自動更新を行わない]にチェックするとか
復旧については
リンクからデータを拾う上記の方法
捜索については、必要ならですけれど
同一マシン内で移動しているものが名前変更のせいで見つからない場合に向けては
そのブックを特定できるブック内のデータとしてのキーワードで検索してみるとか
既に消去されていると判断された時、必要ならサルベージを検討・依頼するとか
何処か外部のドライブに移動された前提だと、普通に人に訊いて回るとか、
こんな感じでしょうか。
長くなりました。それでも外していたらごめんなさい。
それでは、また。
No.6
- 回答日時:
#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オブジェクトに替えてください。
リンク先を一覧してみるのも役に立つことがあるかも知れません。
何度もありがとうございます。
Sub Re8200869 ためして見ました。
数式に表示されるフルパスと同じ文字列が取得されました。
ABC.xlsxの他のセルに =フルパス[XYZ.xls]Sheet1!A1 のように入れてみたら値が表示されました。
ただ、それが正しいかどうか自信がありません。
このようなやり方で最後にリンクを更新したときのデータを取得できるのでしょうか?
No.5
- 回答日時:
こんにちは。
お邪魔します。伝えられている現象だけで判断するなら、
ファイルは存在し、リンクも活きていて、
ただ、XYZ.xlsが存在するフォルダでXYZ.xlsファイルを表示できていない、
とかいう解釈も成り立つのかな?と思ったりしました。
VBAから、Workbooks.Open FileName で開けるかどうか
試してみてはどうでしょう。
XYZ.xls 存否を納得できる形でハッキリさせることはできるかと。
ほんの一例ですけれど、
「フォルダ内のファイルが正常に表示されない現象について」
http://support.microsoft.com/kb/418535/ja
ここで説明されているような条件で、
今回の問題の現象も再現できるように思いましたので。
ただ、私の方では、試す環境がありませんし、
類似の現象についての情報にも疎いので自信はあまりありませんけれども。
ただ、上の条件とは違いますけれど、
ネットワーク上(外部ドライブ)の特定のフォルダを参照、または取り込んだ時に
勝手に隠しファイルになってしまう、というような経験は
2、3、憶えがあります。こちらも再現はできませんが。
とりあえず、ちょっと目先を変えるようなレスをしてみようと思ったまま書いてみました。
いつもありがとうございます。
> ファイルは存在し、リンクも活きていて、
「ファイルを開くとき、更新できないリンクがあります。」とメッセージがでますのでリンクは生きてないと思います。
参考URLはXPの問題のようですがこちらはWindows7です。
ありがとうございました。
No.4
- 回答日時:
回答No1です。
ファイルが探せないとのことでしたら「スタート」ボタンをクリックして左下隅に表示される「プログラムとファイルの検索」の窓にXYZ.とでも入力して検索してみてはいかがでしょう。どこにあるのかが分かると思いますが。
この回答への補足
ありがとうございます。
もちろん質問する前に、数式にあるパスを見ましたし、そのパスから移動したかと思い検索もかけています。でもありませんでした。
名前を変えられたか消されたとしか思えません。
それで、ABC.xlsxが最後にリンクを更新したときのXYZ.xlsのSheet1のA1:B26の表データをABC.xlsx自体から取り出せないかと質問しました。
ABC.xlsx自体がデータを保持してないとリンクが切れているのにVLOOKUP式で答えがでるはずがないですから。
さきほどためしにABC.xlsxの他のセルに =数式にあるパスのSheet1のA1 と入れてみたら表示されました。
ただ、それが正しいかどうか自信がありません。
No.3
- 回答日時:
ご質問の主旨は
> リンク元であるXYZ.xlsの所在が不明
だから、あらかじめ開いておけない、と言うことで良いですか?
とりあえず・・リンク元(XYZ.XLS)が開いていない状態で
リンクを設定してあるセルにフォーカスを持たせると、
添付図のように「数式バーにリンク元のフルパス(所在)」を表示してくれますよ。
「いや、そうじゃないんだよ。」と言うときは、
回答側に何か誤解があるのかもしれません。
「現状を詳細に補足」くださいませ。
![「エクセルでデータのリンク元が所在不明の場」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/2/1229456_5497e1f784d09/M.jpg)
ありがとうございます。
その「数式バーに表示されたリンク元のフルパス(所在)」にないから所在不明なのです。
でもひょっとしてと試しに、別のセルに「=リンク元のフルパスとセル名」を入れセルを参照してみたら保持していると思われるデータが取り出せました。これは正しいデータなのでしょうか?
No.2
- 回答日時:
ABC.xlsx のあるセルは、VLOOKUP式で、XYZ.xlsのSheet1のA1:B26の表を参照していて、リンク元であるXYZ.xlsの所在が不明の場合、ABC.xlsxが保持しているリンクの最新のA1:B26の表データを取り出すことはできませんが、データが見えているのであれば、そのままコピーして、形式を選択して、値のみ貼り付けてください。
この回答への補足
形式を選択して、値のみ貼り付けてしまえば現在表示しているデータだけしかわからなくなります。
ほしいのは最新でなくともいいですから、最終更新時のA1:B26の表データです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Excel(エクセル) 至急です><Excelの関数を教えてください。 2 2022/03/22 17:56
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) Excelの複数人での参照について 2 2022/06/01 13:38
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Access(アクセス) Access2016のExcelインポートの機能のことで教えてください 1 2022/09/11 14:58
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルやワードを無料で使え...
-
Microsoft365搭載Windows11PCへ...
-
【スプレドシート】IMPORTRANGE...
-
現在、PC2台でMicrosoft 365 Pe...
-
英数字のみ全角から半角に変換
-
Microsoftにofficeアプリについ...
-
Microsoft Formsの「個人情報や...
-
エクセルで英文字に入れた下線...
-
大学のレポート A4で1枚レポー...
-
excelの画面のグリッド線の消滅。
-
会社におけるOfficeライセンス...
-
エクセルでXLOOKUP関数...
-
office365って抵抗感ないですか?
-
outlookで宛先が異なるメールを...
-
Microsoft365で写真をアルバム...
-
Excel 日付を比較したら、同じ...
-
会社PCのメールが更新されない
-
エクセルの貼り付け「リンクさ...
-
Outlook で宛先が複数の場合の人数
-
Microsoft Edgeの「関心のある...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
英数字のみ全角から半角に変換
-
「生産性ソフトウェア」とは何...
-
会社PCのメールが更新されない
-
【関数】○年○ヶ月と表示された...
-
WEBの記事を印刷する際にA...
-
エクセルでXLOOKUP関数...
-
Microsoft familyに追加されま...
-
会社のOutlookにてメールを予約...
-
Microsoft Formsの「個人情報や...
-
Microsoft365の一部を解約したい
-
マクロ自動コピペ 貼り付ける場...
-
Outlook で宛先が複数の場合の人数
-
outlookのメールが固まってしま...
-
【Excel VBA】PDFを作成して,...
-
大学のレポート A4で1枚レポー...
-
office365って抵抗感ないですか?
-
Microsoftにofficeアプリについ...
-
Excel テーブル内の空白行の削除
-
マイクロソフト 一時使用コード...
おすすめ情報