エクセルでファイル名やシート名、パスの変更を参照する方法

このQ&Aのポイント
  • エクセルで他のファイルや他のシートのセルを参照している場合、環境の変化でファイル名やパスが変更されると「ファイルが見つかりません。」というメッセージが表示されることがあります。この手間を省くために変数を設定するセルを用意し、環境の変化があっても影響を受けないようにすることが望まれます。
  • 具体的には、セルAにファイル名、セルBにシート名、セルCにパスを設定します。セルXで参照したいセルの内容を変更前の形式で入力しておきます。環境が変わった場合、セルA、セルB、セルCの内容を変更するだけで、セルXは変更前の内容を維持したまま参照が可能です。
  • これにより、環境の変化に対応するために、個々のセルの内容を変更する手間を省くことができます。Excelの関数を使用してファイル名やシート名、パスを設定し、参照するセルを変更する方法を調べて実現することができます。
回答を見る
  • ベストアンサー

ファイル名やシート名、パス等の変更を参照する方法

エクセルで他のファイルや他のシートのセルを参照している場合に、環境の変化で他のファイル名やパスが変更されたり、シート名が変更されると「ファイルが見つかりません。」というメッセージが表示され、影響が出たセルの数だけ利用者が元のファイルやシートを探す羽目になり、操作上の面倒を強いられております。 この場合、この様な手間を掛けないで済むよう予め変数を設定するセルを用意しておくように修正したいと思います。 環境に変更が生じた場合は、この変数を設定したセルだけを変更すれば個々のセルに影響が出ないようにすることが望ましいと考えますが、実際にどのようにすれば実現できるのかエクセルの関数等を調べても判りません。 具体的にファイル名やシート名、パス等の環境を設定するセルと、それを参照するセルの関係を下記の例で、 (1)参照するセルXの設定内容 (2)ファイル名やシート名、パスを自動的に設定したり、参照する方法 以上のご教示を、よろしくお願いいたします。 例 セルA:ファイル名を変更設定するセルで、内容:Table01 セルB:シート名を変更設定するセルで、内容:Sheet01 セルC:パスを変更設定するセルで、内容:D:\Data\Table セルX:参照するセルで、変更前の内容:C:\Data\Table\[TableA.xls]SheetA'!C5

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

#1です。#1で出来ないと言いましたが、訂正します。下記で出来ると思います。 Sheet1のB1セルに「Sheet3」、C1に「A1」と入っているとき、Sheet3のA1セルの値を持ってくるには 例えばSheet1に関数=INDIRECT(B1&"!"&C1)を入れると 値を引いてきます。ブックの場合も B3にaa1.xls(ブック名) C3にTEST(シート名) D3にA1として =INDIRECT("["&B3&"]"&C3&"!"&D3)で値を引いてきました。

aquas412
質問者

お礼

本件は追試をして確認しました。 意外と簡単なことで解決したので、驚きでした。 2度に渡り、解決へ導いて頂き、感謝してます。 本当にありがとうございました。 ついでながら、SUM関数の対象セルに対してこれを下記のように応用したのですが、シート間で上手く行きません。 =SUM(INDIRECT("["&B3&"]"&C3&":"&C4&"!"&D3)) 同じシート行や列ではOKですが、シート間ではNGでした。 これは自分で調べてみます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

エクセルで、セルを間接的に指定するINDIRECT関数と似た機能をシート名やブック名にも適用する関数が無いかとの質問だと、私は解釈しました(違っていたらごめんなさい)。 Sheet1のB1セルにsheet3!a1と入れておき、=INDIRECT(B1)としてsheet3!a1を参照することは可能です。 しかしSheet3の部分を別セルに文字列にしたり、A1も別セルにして、=INDIRECT(B2)!INDIRECT(C2)などが出来ないと思います(B2にSheet3、C2にA1を文字列で入っているとき)。 なにか範囲名を使うことで出来ないかとも考えましたが。 私はエクセルの知識が中途半端な者ですが、「無い」と思います。 方法が「ない」と言うのは、後で回答が出ると無知を曝すわけで、言いい難いですが、本など一通り調べましたが見つかりませんでした。 普通エクセルの質問に対しては、すぐ回答が入るものですが、本件入っていないのは、これを裏付けるような気がします。 でも私も日頃エクセルを使っていて欲しい機能で、この後ズバリの回答が出ることを期待します。 (参考までに) VBAでも文字列をオブジェクトの指定に使うプログラムは 結構難しいです。 Sheet1のB1セルに「Sheet2」と入っていて、Sheet2のA1に値が入っている時、Sheet2のA1セルを参照したいとき。 Sub test04() Worksheets("sheet1").Activate s = Worksheets("sheet1").Range("b1") MsgBox Worksheets(s).Range("a1") End SubはOK Sub test03() Dim sh As Worksheet s = Worksheets("sheet1").Range("b1") Set sh = Worksheets(s) MsgBox sh.Range("a1") End Sub はOKとなります。

aquas412
質問者

お礼

VBAは考えてませんでしたので、この方法はこの際に勉強します。 ありがとうございました。

関連するQ&A

  • EXCELで参照シート名含む計算式の変更マクロ

    マクロを作成しておりますして、わかりづらいか質問もしれませんが宜しくお願いします。 (1)マクロを配布し先方(複数拠点)で持っているブックに変更をかけ  たい。 (2)そのブック内には複数シートがあり、計算式で他シートを参照して  いる。 (3)その計算式を変更かけたい。が(2)でいう参照シートのシート名を各  拠点にて変更しているので、計算式も変更後のシート名が入って  いる。 例えば、 シート1のA1セルに「=(xxxxx)!B1/C5」という式を埋め込みたい。    ※(xxxxx)はシート名。 でも、(xxxxx)のシート名は拠点によってシート名がことなることが 問題。尚、シート名以降の計算式は全拠点共通。 そこで、こんなことがやれればのイメージですが イメージ1: シート1の他のセル(D1)で(xxxxx)と同じシート名を参照している 式が必ず存在している。拠点毎にシート名は異なるがセル(D1)の 場所は共通。 このセル(D1)の式からシート名を抽出し、上の「=(xxxxx)!B1/C5」 の(xxxxx)に入れて、シート1のA1セルにこの計算式を記載する マクロを作る イメージ2: もし「=(xxxxx)!B1/C5」の(xxxxx)部分に仮名称を入れたものを マクロでシート1のA1セルに書き込んだあと、各拠点にて(xxxxx) →それぞれ拠点で使っているシート名に置換する ような方法があ るか?(存在しない参照シート名のまま書き込むとファイル指定の ダイアログが開くので、開かないような汎用的な記述を一旦仮置き できないか?) 以上宜しくお願いしたします

  • 参照したいブックのパス名に"["

    外部参照についてお尋ねします。 他のブックを参照するのに ='パス名[ブック名]シート名'!セル名 と入力しますが、参照したいブックの保存フォルダ名に"[ ~ ]"と角カッコが使われています。 ここがブック名を括るカッコと認識されてしまい、参照がうまくできません。 パス名のカッコをエスケープする方法はありますでしょうか。 諸事情からフォルダ名や被参照ブックの移動などができないので困っています。 ご存知の方いらっしゃいましたら、ご教示いただけますようお願いいたします。

  • Excel 別シートのセルを参照させる時の疑問

    エクセルであるシート(A)のセルに、別シート(B)の特定のセルを参照させたい場合、(A)のセルに= を入力し、続けて(B)の参照させたいセルを選択すると、=の後に選んだシート名+「!」+セル名が表示されます。 同じ作業をいくつか続けて行っているのですが、一カ所だけ「=」のあとのシート名が 「'」マークでくくられます。 問題なく選択したセルの参照は行えるのですが、この「'」は何を表しているのでしょうか。 分かりにくいので例を書きますと、たとえば「sheetA」の「A1」を参照させた場合、 ケースその1 : =sheetA!A1 ケースその2 : ='sheetA'!A1 このような違いがあります。 お分かりになる方がいらっしゃいましたら、恐れ入りますがよろしくお願いいたします。

  • 別ファイルを参照しながらシート名を動的に

    Excelにて、VLOOKUP関数を使用し別ファイルを参照してます。 (こちらをAファイルとします) 別ファイル(こちらをBファイルとします)にはいくつかシートがあり、Aファイルに入力された値によって、Bファイルを参照するシートを変更したいのですが、うまくいきません。 AファイルはC:\workに BファイルはC:\work\workにそれぞれ配置してあります。 AファイルのセルA1には任意の値を入力可能で、その値によって参照するBファイルのシートを変更できます。 VLOOKUP(B1,INDIRECT("'C:\work\work\[Bファイル.xls]"&A1&"シート'!$A$1:$B$100") Aファイルに上記のような関数を書いても、#REFと表示されてしまいます。 どこがおかしいのでしょうか? #AファイルとBファイルを同時に開いている状態だとうまく表示されました。

  • EXCEL 相対セル参照でいいものが、フルパスのブック名付きとなってしまう

    シートAのあるエリアのセルを シートBにて参照しています。 相対にてセル参照を作成したものですが、 日を置いて確認したところフルパスのブック名付きとなってしまったものです。 具体的には 当該のファイルが「会計報告.xls」で、c\temp に置かれている場合、 単純に「=Sheet1!A1」であってほしいのに、 「=c\temp\[会計報告.xls]Sheet1!A1」 といった具合にブックの名前まで記述されてしまう現象に悩まされているものです。 これでは他人に使用してもらうことができず困っています。 計算式の入ったセルを保護したのですがそれと何か関係があるのでしょうか?

  • エクセルのセル参照で、セルにパスが入る

    初心者の為、お願いします。 Office2000を使用しています。 あるエクセルファイルのシートのセルを参照して新たなエクセルファイルに反映させたいと思いました。(セル参照というのでしょうか。) しかしながら、どうしても反映させたいセルに元エクセルシートのパス(=\○○.xls\○○(sheet名)\セル番地、等)が入るのです。 セルの表示形式かとも思ったのですが、どう変えても同じ結果です。 違うようです。 このような現象の場合、どんな理由が考えられるでしょうか。 よろしくお願い致します。

  • エクセル 他シートのセル参照について

    sheet1とsheet2という2つのシートがあります。 sheet1のセルに=sheet2!A1と設定して、sheet2のA1の内容を参照するようにしてあります。 このA1の1の部分を変数にしたいのですが、どのように設定すればよいのでしょうか?

  • パス名を参照するコードのファイルネームがが知りたい

    EXSEL2003でユーザフォームにテキストボックスを作成してテキストボックスの横に参照ボタン(コマンドボタン)をおいて 参照ボタンを押すと参照ファイルが開いてテキストボックスにパス名だけを取り込見たいのですが次のようにやってみましたが うまくいきませんGetOpenFilenameをどのように記載すればよいかを教えてください。 参照して取り込みたいファイルは C:¥UWSC44b.uwsc\aaa.uwsというファイルのパス名です。 ボタンに記載したコードは次のようですが Sub filename_get() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("c:uwsc44b,*.uws?") Workbooks.Open OpenFileName End Sub 上記のように記載したのですがファイルは参照できるのですがパス名が取り込むことができません。 よろしくお願いします。

  • Excelで外部参照パスの一部を複数セルから利用は

    Microsoft Excelで (数式入力可能ならどのバージョンでも同じ)、 A1セルに、別ファイルの外部001.xlsxのSheet1のC1の値 123 と A2セルに、別ファイルの外部001.xlsxのSheet1のC5の文字列 こんにちは を 外部参照を使用して、セルに表示させたいのですが、 B1に下記のようなパスを手入力しておきたいです。 'C:\Temp\[外部001.xlsx]Sheet1' そして、 A1セルに数式として、B1のパスファイル名+セル名 のようにB1の値を利用したいです。 例:(この通り外部参照全てをB1に書いても、A1とA2は計算式エラーになります) 'C:\Temp\[C1あ.xlsx]Sheet1'!C1 <-- 実際には、\は円記号。 他の書き方でも値エラーとなったもの↓ ''C:\Temp\[C1あ.xlsx]Sheet1'!C1 "'C:\Temp\[C1あ.xlsx]Sheet1'!C1" ''C:\Temp\[C1あ.xlsx]Sheet1'!C1' 下記のような書き方で、 外部参照パスを一つのセルに記述し、 複数のセルからその1つのセルを参照利用する場合の実現方法を教えてください。 A1セル $B$1&"!C1" A2セル $B$1&"!C5"

  • エクセルのセル参照でファイル名の変更について

    今、エクセルで別ファイルからセル参照でデータを持ってきているものがあるのですが、 データの参照先のファイル名を、どうしても変更する必要が出てきました。 データ自体が月毎で集計するので、今後も参照先のファイル名は一部分ですが 変更する事になります。 セル参照の数式が入っているファイルで、置換をしようとすると、「値の更新」という表記で ファイルを選択する画面が開いてしまい、該当ファイルを選択しても、一つのセルしか 更新しません。この方法だとすごく時間がかかってしまうので、一度にファイル名を変更する 方法はないでしょうか? いい方法がありましたら教えていただければと思います。よろしくお願いいたします。 エクセルは2010を使用しています。

専門家に質問してみよう