• ベストアンサー

エクセル関数>参照ファイル名をセルから呼び出す

別ファイル(ブック)のセルを表示させたいのですが、例えば =[あいうえお.xls]かきくけこ!$A$5 とせずに、 ファイル名は A1セル の文字列を充てる、というようなことは出来ないでしょうか? 関数が分からない人でも、簡単に参照したいファイル名を変えられるようにしたいのです。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

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

sohomono
質問者

お礼

「ブック名が開いていないなら」と、「先」の回答までいただきありがとうございます。 助かりました。

その他の回答 (2)

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.3

こんにちは。 下記のコードは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

sohomono
質問者

お礼

ご教授ありがとうございます。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

A1="[あいうえお.xls]" B1=INDIRECT(A1&"かきくけこ!$A$5")

sohomono
質問者

お礼

早速ありがとうございます。

関連するQ&A

専門家に質問してみよう