Excelの外部参照についてお伺いしたいです。いま、仮に以下の状況があったとします。

Excelの外部参照についてお伺いしたいです。いま、仮に以下の状況があったとします。 《状況》 Parent.xlsxは不特定多数のExcelブック(A.xlsx, B.xlsx, C.xlsx...)たちによって参照されている。Parent.xlsxのシートおよび使用されているセルは多いため、手作業で1セルずつ「参照元のトレース」をすることは難しい。また、Parent.xlsxを参照する可能性のあるブックも多数であり、それらを総当たりすることも難しい。 《ご質問》 以上の状況で、Parent.xlsxを参照している外部Excelブックたちの一覧表を、Parent.xlsx側から取得することは可能でしょうか? 理論上はParent.xlsxのセルを1つずつ「参照元のトレース」で調べれば取得可能ですが、ブックのサイズ的に厳しい場合はどうしたら良いかが知りたいです。 《出力イメージ》 Parent.xlsx側で処理をした結果、「A.xlsx, D.xlsx, K.xlsx, Z.xlsxがParent.xlsxを参照しています」というような出力が出て欲しい。 ============================= DirectDependmentsメソッドでは同シート内までしか取得できないとのことでしたので、もし何らかの方法をご存知の方がいらっしゃればご教授いただきたいです。よろしくお願いいたします。

Excel | Visual Basic35閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

0

新規ブックで以下のマクロを作成する。 開いていないブックはチェックできないので、Parent.xlsxを参照していると思われるブックを開く。 マクロを実行する。 A列に参照しているブック名が表示される。 Parent.xlsxにマクロを作成してもよいが、A列を削除するので空白のシートをアクティブにしてから実行してください。 外部参照チェック() Dim Var As Variant Dim Msg As String Dim I As Integer 参照元 = "Parent.xlsx" K = 1 ThisWorkbook.Activate Range("A1").Select Range(Selection, Selection.End(xlDown)).ClearContents Range("A1") = "【 " & 参照元 & " 】を参照しているブック" For Each wb In Workbooks On Error Resume Next If wb.Name <> ThisWorkbook.Name Then Var = wb.LinkSources(xlExcelLinks) If IsEmpty(Var) = False Then For I = 1 To UBound(Var) If Var(I) Like "*" & 参照元 Then Range("A1").Offset(K) = wb.Name K = K + 1 End If Next I End If End If Next Range("A1").Offset(K) = "チェック終了" End Sub

ThanksImg質問者からのお礼コメント

可能性のあるファイルを全部開いて、それらのリンクリストを取得するアイデアが勉強になりました。ありがとうございました。

お礼日時:9/26 0:22

その他の回答(1件)

0

考え方として、 エクセルファイルにこだわらず、 フォルダを作って、 フォルダ内のエクセルデータから外部参照する 文言を入れて 外部参照されてみては?