重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

初歩的な質問ですいません。
セルの参照で
   A     B   C
1  あ     い
2  う     え


='D:\A¥B\[B1.xlsx]Sheet1'!合計

のフォルダBとファイルB1を変数にして
C1に
='D:\A¥あ\[い.xlsx]Sheet1'!合計

C2に
='D:\A¥う\[え.xlsx]Sheet1'!合計
としたいのですが、

その場合どう表記すればいいのですか?
INDIRCT関数の場合も教えていただければありがたいです。

A 回答 (3件)

こんばんは。



作成例:
sub macro1()
 dim b as string
 dim b1 as string
 b = range("A1").value
 b1 = range("B1").value
 range("C1").formula = "='D:\A\" & b & "\[" & b1 & ".xlsx]Sheet1'!合計"
end sub

作成例:応用
sub macro2()
 range("C2").formula = "='D:\A\" & range("A2").value & "\[" & range("B2").value & ".xlsx]Sheet1'!合計"
’以下オプション
’range("C2").value = range("C2").value
end sub

作成例:INDIRECT関数を使う場合
sub macro3()
 dim myPath as string
 dim myFile as string
 dim w as workbook
 mypath = "D:\A\" & range("A1").value & "\"
 myfile = range("B1").value & ".xlsx"
 set w = activeworkbook
 workbooks.open mypath & myfile
 w.select
 range("C1").formula = "=INDIRECT([" & myfile & "]Sheet1!合計)"
 workbooks(myfile).close false
end sub



#補足
INDIRECT関数では、「閉じたブック」への参照を可変にすることは「できません」。
    • good
    • 0
この回答へのお礼

ありがとうございます。
やはりマクロしかありませんか?!

お礼日時:2012/11/29 00:14

ん?


>やはりマクロしかありませんか?!

別に出し惜しみやイジワルをしてるワケではありません。そういう便利な方法があれば、さっさとそう回答しています。
ご相談に書かれた「その通りの事」をしたければ、こうしますと回答しているのです。


どうしてもINDIRECT関数が使いたいなら、回答したマクロの3番目でやっているのと全く同じく、手動でブックを開いてください。
その場合は「どこのブック」は手で開いた時点で確定していますから、ブック名だけが可変になります。
    • good
    • 0

パス、拡張子は自分の環境に合わせる。



=INDIRECT("'D:\tmp\tmp\"&A1&"\["&B1&".xls]Sheet1'!合計")
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/11/28 23:26

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