- ベストアンサー
エクセル関数>参照ファイル名をセルから呼び出す
別ファイル(ブック)のセルを表示させたいのですが、例えば =[あいうえお.xls]かきくけこ!$A$5 とせずに、 ファイル名は A1セル の文字列を充てる、というようなことは出来ないでしょうか? 関数が分からない人でも、簡単に参照したいファイル名を変えられるようにしたいのです。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
A1に「あいうえお.xls」があるとき =INDIRECT("[" & A1 & "]かきくけこ!$A$5") でよいでしょう。 ただし「あいうえお.xls」が開いている必要があります。(#REF!エラーになるため) A1に入力されたブック名が開いていないなら、ブックを開くようにするのであればマクロが必要です。ブック名を入力しているのがSheet1だとしたら以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて保存して下さい。 するとINDIRECT関数を入力したブックを開くときに、A1セルのブックも開くようになります。ただし下から3行目のファイルパスは修正が必要です。 Sub Auto_open() Dim wb, mybk As Workbook Set mybk = ThisWorkbook For Each wb In Workbooks If wb.Name = Sheets("Sheet1").Range("A1").Value Then Exit Sub End If Next wb Workbooks.Open "C:\Temp\" & Sheets("Sheet1").Range("A1").Value mybk.Activate End Sub
その他の回答 (2)
- WWolf
- ベストアンサー率26% (51/192)
こんにちは。 下記のコードはA1のセルが変更されたらA1のファイル名でC:\tmpの中にそのファイルが存在したら、そのブックのA1の値を参照します。 参考にしてそちらの仕様に変更してください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim MD As String, MF As String If Target.Address = "$A$1" Then MD = "c:\tmp\" MF = Range("A1").Value & ".xls" If Dir(MD & MF) <> "" Then F = "'" & MD & "[" & MF & "]Sheet1'!R1C1" Range("A5").Value = Application.ExecuteExcel4Macro(F) Else MsgBox "セルA1のファイルが存在しません " End If End If End Sub
お礼
ご教授ありがとうございます。
- mshr1962
- ベストアンサー率39% (7417/18945)
A1="[あいうえお.xls]" B1=INDIRECT(A1&"かきくけこ!$A$5")
お礼
早速ありがとうございます。
お礼
「ブック名が開いていないなら」と、「先」の回答までいただきありがとうございます。 助かりました。