• ベストアンサー

【Excel】シート名の取得

Excel2003を使用しています。 シート名をそのシート内のセルに入力する数式に使いたいのですが、関数でシート名を取得することは可能でしょうか? イメージ的には、ヘッダーやフッターにシート名を表示させるような感じで、シート名を変更したら、セルの表示も変更できるようにしたいのですが… 以前、別件で同様のことを質問したことがあり、マクロでなら可能という回答をいただいて、参考のURLも記載していただいていたので、URLを見ようとしたのですが、これが数ヶ月前のことでして、URLを見ることができなくなっていました。 よろしくお願いします。

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

  • ベストアンサー
回答No.1

=MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)

rx-z5815
質問者

お礼

回答ありがとうございます。 教えていただいた方法で試してみたところ、うまくいきました。 ありがとうございました。

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。Wendy02です。 VeR.4マクロ関数についてなのですが、 #VBAに詳しい人なら分かるはずですが。 と書いて留めたのですが、MSDNで、「Excel2007の変更(英文)」について、Microsoft が少し触れていたようです。VBAは、最後まで、Ver.4マクロ関数の完全移行はできなかったわけで、グラフの一部分では、まだ、Ver.4マクロ関数がないといけないので、当面、継続することになったことが書かれていました。また、印刷関係の設定の取得も、VBAでは、うまくいっておりません。 Ver.4 マクロでウィルスを作ったり、また、特殊な設定をする人間がいるらしく、国内外で、このマクロ関数の撤廃が望まれるようになったそうです。日本で、不幸だったのは、Ver.4マクロ関数のヘルプは、旧MSKKのスタッフが日本独自で作ったもので、新しいものとの整合性がなく、MSが新しく作ったヘルプの配給はなくなってしまったようです。そのヘルプは、[MACROFUN.HLP](Ver.4/5/7 に同梱, マニュアルは、Ver.4に詳しい)ですが、新しいヘルプは、多くの言語がサポートされているのに、アジア系の言語はひとつもありません。特に、MS-DOS時代を含めて、日本は、MSに対して一番の貢献度の国のはずなのですが。

参考URL:
http://www.microsoft.com/downloads/details.aspx?FamilyID=C09BF7F7-D30E-4CE9-8930-5D03748CA5CD&displaylang=en
rx-z5815
質問者

お礼

Wendy02 さん、こんにちは。 再度の回答ありがとうございます。 >Ver.4 マクロでウィルスを作ったり、また、特殊な設定をする人間がいるらしく、国内外で、このマクロ関数の撤廃が望まれるようになったそうです。 そうなんですね。 ウイルスを作ったりもできるんですか… こういうことは、私の理解の範囲を超えていますが、目にしておくだけでも参考になります。 ありがとうございました!

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.5

◆こんな方法もありますよ =REPLACE(CELL("FILENAME",A1),1,FIND("]",CELL("FILENAME",A1)),)

rx-z5815
質問者

お礼

回答ありがとうございます。 いろんな方法があるんですね。勉強になりました。 ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 過去のもので、もう使われないことが多いのですが、Ver.4 マクロ関数ですと、以下のようになります。ただし、数式のコピーは、そのシート内に限ります。他にシートには、新たに数式を作らなくてはなりません。 名前-定義 名前: shName (任意) 参照範囲: =GET.WORKBOOK(3)&LEFT(NOW(),0) セルの数式 =MID(shName,FIND("]",shName)+1,31) (アクティブなシートに対して、シート名を取ります) 国内外で、マクロ関数を否定的な人は、Excelユーザーには大勢いるようですが、今のところ使えます。VBAに詳しい人なら分かるはずですが。

rx-z5815
質問者

お礼

Wendy02 さん、こんにちは。 いつもお世話になっています<(_ _)> >過去のもので、もう使われないことが多いのですが、Ver.4 マクロ関数ですと、以下のようになります。ただし、数式のコピーは、そのシート内に限ります。他にシートには、新たに数式を作らなくてはなりません。 「Ver.4 マクロ関数」という言葉は、ここのサイトで目にしたことはありましたが、使用したのは今回初めてでした。 過去のもので、もう使われないことが多いとのことですが、いずれ使えなくなってしまう関数なのですか? 素人感覚なのでしょうが、便利なもののように感じました。 ただ、今回は複数のシートに渡って数式をコピーしたいので、CELL関数かマクロで、やってみようと思っています。 ありがとうございました!

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

CELL関数を用いて、No.1とNo.2の方の書かれた方法でできますが、一応マクロでやる方法もご紹介しておきます。(ファイルを保存してなくても使えます) Alt+F11でVBAの画面を開き、左側のツリーからブック名を選択し、右クリックから「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。 Function GetSheetName() As String  Application.Volatile  GetSheetName = ActiveSheet.Name End Function 貼り付けたらVBAの画面は閉じてかまいません。 エクセルの表に戻り、 =GetSheetName() とセルに入力すると、シート名が表示されます。

rx-z5815
質問者

お礼

ham_kamo さん、こんにちは。 いつもお世話になっています<(_ _)> 教えていただいた方法でうまくいきました。 マクロ勉強中ですので、マクロでやる方法も紹介していただいて、大変参考になりました。 ありがとうございました!

  • akio_myau
  • ベストアンサー率34% (515/1480)
回答No.2

必ずそのファイルが1回保存している必要がありますが 以下のような式でどうでしょうか。 =RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))

rx-z5815
質問者

お礼

回答ありがとうございます。 おかげさまで、教えていただいた式で、うまくいきました。 ありがとうございました。

関連するQ&A