• ベストアンサー

他のワークシート名の取得方法 (VBAを使用せずに)

VBAを用いずに、ワークシート関数のみでワークシート名を取得できないか探しています。 自分のシート名は、以下の出力結果の一部より取得することができました。 =CELL("filename") しかし、他のシート名を取得する方法が思いもつきません。 VBAを用いずにシート名を取得することはできないのでしょうか?

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

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

Excel2000でしたら、 1.[挿入]-[名前]-[定義] から、名前を2つ定義します。   ・名前:PPP  参照範囲:=GET.WORKBOOK(1)   ・名前:QQQ  参照範囲:=GET.DOCUMENT(88) 2.A1 に =SUBSTITUTE(INDEX(PPP,ROW()),"["&QQQ&"]","") と入力します。 3.A1 を下方にドラッグコピーすると、シート名が一覧で表示されます。 例えば3枚目のシート名のみを取得する場合は、任意のセルに =SUBSTITUTE(INDEX(PPP,3),"["&QQQ&"]","") と入力します。 ※マクロ関数というものですが、最近のバージョンにこれが付帯されているのかどうか   わかりませんが。   ^_^;

TERIYAKIcom
質問者

補足

回答ありがとうございます。 まさに、これです! マクロを使っているのに、セキュリティ警告もでませんし、レベル高でも普通に使えるので素敵です。 ただ、ヘルプに載ってないのは・・・。 マクロ関数に関する良い資料などご存知でしたら教えていただけませんか?

その他の回答 (4)

回答No.5

#4です。 次のサイトなどには  「Excel 4.0 マクロ がいつまでサポートされるかわからず、いつ利用できなくなっても   おかしくないものなので、これをわざわざ勉強する価値はあまりない。」 のように書かれています。 使ってみると、とても便利なものなのですが......。 http://www.relief.jp/itnote/archives/001368.php Excel 4.0 マクロ のヘルプファイルは次からダウンロードできますが、英語です。 http://www.microsoft.com/downloads/details.aspx?FamilyID=C09BF7F7-D30E-4CE9-8930-5D03748CA5CD&displaylang=en インストールすると、Office以下のフォルダ内に Xlmacro.chm というファイルが書き込ま れますので、検索してください。 Office97には、前のバージョンのマクロ関数の日本語ヘルプ(Xlmacr8.hlp)が付いていま したが、2000以降には付いてないようですね。 Xlmacro.chm というファイルは Excel2000にも元々あるのですが、これには「マクロ関数 のヘルプファイルがインストールされていない」とだけ書いてあります。

TERIYAKIcom
質問者

お礼

そういうことだったんですか・・・。 私も、2000なのですが、新しいヴァージョンのものは怪しげですねぇ。 とりあえず、2003で動くことを確認して、問題があるようだったら度合いによって、この機能を使うか使わないか判断させていただこうと思います。 いろいろ、ありがとうございました。

TERIYAKIcom
質問者

補足

その後、Office2003で試しました。 その結果、動きはしましたが、マクロの警告が出てしまいました。 (2000では、出なかったのですが・・・。) 結局、VBAであろうと、マクロ関数であろうとセキュリティ警告が出てしまったので、 場合によってVBAとマクロ関数の使いやすい方でやらせていただきます。 ありがとうございました。

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

シートを指定するのに Activeシート Index 名前 の方法があると思うが、名前は、名前がわからないので問題にするので自己矛盾。 Activeシートに当たるのがCELL関数。 シートのIndex番号を指定する関数も無いと思う。 なぜVBAにこだわるのといいたい。関数だって普通は内部で何をしているか知っている人は無い(MSから公表されていない)わけで、よっぽど難しいVBAは別として、下記ユーザー関数で1行で表せるし、中身も 判りやすい。 CELL関数も、関数のなかで異色の、互換性のためのもの。 標準モジュールに下記を貼り付け Function fn(n) fn = Sheets(n).Name End Function nはシートタブの左からの順番の数字を入れる。 シートでは =fn(4) のように入れる。

TERIYAKIcom
質問者

補足

回答ありがとうございます。 VBAのSheetsコレクションは知っていて、これで実現できるのも知っているのですが。 > なぜVBAにこだわるのといいたい。 ・セキュリティ警告を嫌う風潮があるので、できる限り避けたい。 ・セキュリティレベルを高にしている人がいるので、VBAを禁止にしていることに気づかず問題になる可能性がある。  (最近のは、デフォルトはレベル高ですし・・・。) という2点です。 教えていただいた、VBAを利用させて頂きます。

  • NNAQ
  • ベストアンサー率56% (104/184)
回答No.2

すいません、他のワークシート名ですか。 単にセルに表示させたいだけなら =CELL("filename",Sheet2!A1) とか… シート名を取得する目的は何でしょうか?

TERIYAKIcom
質問者

補足

あ、既に返答が来てましたね。 すみません、気づきませんでした。 > =CELL("filename",Sheet2!A1) これですと、"Sheet2"と自分で入力しているので・・・。 > シート名を取得する目的は何でしょうか? シート名が変更されても、値を取得したいのです。 また、他のフォーマットを合わせたブックに適用するときもそのような仕組みであれば容易に貼り付けられるためです。

  • NNAQ
  • ベストアンサー率56% (104/184)
回答No.1

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

TERIYAKIcom
質問者

補足

すみません、セルの属するシート以外のシート名を取得したいのです。

関連するQ&A

  • EXCEL:シート名を返す関数?

    アクティブシート名を返す関数ってあるのでしょうか。 ヘルプやネット検索で探してみたのですが見あたりませんでした。 とりあえず =RIGHT(CELL("filename"),(LEN(CELL("filename"))-FIND("]",CELL("filename")))) で、悪あがきしているのですが、 他シートで同じ式を使うと、何故か(!)すべてのシートの上式の答えが 同じになってしまいます。 CELL("FILENAME")は、1ブック1回しか使えない、とかあるのでしょうか。。 当方、EXCEL2000、WIN2000、利用者は素人(私)です。 できればVBAとかは使わず、関数で処理したいのですが、 皆様の御知恵をお借りできませんでしょうか。。

  • シート名を取得して、隣のシートを参照する

    excel2007での、隣のシートを参照する方法を試しています。 例えばh23-3のシートのAL3とh23-4のシートのAH3の加算結果を h23-4のシートのAL3に格納したいのですが、循環しているとエラーが出てしまいます。 分かる方いらっしゃいましたら、ご教授ください。 シートの名前は、h23-4 h23-5のように連続性のある名前にしてあります。 h23-4のシートのAL3に以下の内容を記述しました。 =AH3+INDIRECT("'"&MID(CELL("filename"),FIND("]",CELL("filename"))+1,4)&RIGHT(CELL("filename"))-1&"'!AL3") よろしくお願いします。 自力で作ったため、効率悪いかもしれません。 また、他に良い方法があれば教えてください。

  • =CELL("filename")で取得したファイル名をHYPERLI

    =CELL("filename")で取得したファイル名をHYPERLINK関数で使いたい。 エクセルで「目次」というファイルを作り、そこからHYPERLINK関数で別のファイルにリンクを貼りたいと思っています。 万が一ファイルの場所が移動した場合にも、リンクが切れないように、=CELL("filename")で取得したブック名をHYPERLINK関数で使ったらどうかと思うのですが、うまくできません。 考えた方法は、 (1)ファイル名(テスト1)sheet1のA1のセルに=CELL("filename")と入力したものをコピーして、ファイル名(目次)sheet1のA1にリンク貼り付けする。 (2)(1)で表示された(目次)sheet1のA1のファイル名をHYPERLINK関数の中に使って、リンクを貼れるようにする。 としたいのですがどのように書けばいいのでしょうか。 よろしくお願いいたします。

  • シート内のセルに各シート名を表示するには

    セルに下記の値を入力してシート名を取得しています。 RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename"))) シート名を取得できたのでこのシートを雛型にしてシートをコピーしてシート名を変更したら雛型側も変更されてしまいました。 例えば  シート名が「シート1」のセルに「シート1」  シート名が「シート2」のセルに「シート2」  シート名が「シート3」のセルに「シート3」 というようにしたいのですがうまくいかず困っています。 ※セルとは上記の値を組み込んでいるセルです。 各シート内のセルにそれぞれの各シート名を表示するようにどうしたらいいのでしょうか? 説明が下手ですみませんが理解していただけましたでしょうか? 宜しくお願いします。

  • Excel VBAにてシート名の取得方法

    Excel VBAにてシート名の取得方法はどのようにおこなうのでしょうか? よろしくお願い致します。

  • EXCEL2007 VBA アクティブでないワークシートの名前を取得したい

    Sheet1とSheet2の【A1セル】【B1セル】には以下の処理が入っています。また2つのシートにはVBAを使って、再計算がされるたびに自身のシート名を表示するメッセージボックスを出力する処理を記述しています。 【A1セル】  リアルタイムで値が送られてくる。 【B1セル】  A1セルの値を使った式 【VBA】  Private Sub Worksheet_Calculate()   MsgBox **************  End Sub ここからが質問なんですが、Sheet3をアクティブシートにしている場合、VBAの「*****」の部分に何と記述すれば、再計算されたシート名を取得できますか?

  • Excel VBAの Functionをワークシートから使用できないようにしたいのですが...

    Excel VBAについて質問です。 functionプロシージャを使っている時,一般のマクロからは呼び出せるが,ワークシート関数として使いたくないものがあります。 すなわち,「関数の挿入」ダイアログの「ユーザー定義」のところに不必要な(ワークシート関数として使う意図のないもの)を表示させたくないのですが,そのようなことは可能でしょうか。 今,できるだけsubプロシージャの形にするようにしたりしているのですが,うまい方法があればFunctionも使いたいと思っています。 良い方法があれば教えてください。

  • Excel VBA ワークシート番号の取得の仕方

    Excel VBAでアクティブシートが何枚目のワークシートかを取得する方法を教えてください。 Worksheets.Activesheet.Countとやったけどできませんでした。

  • EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作り

    EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作りました。そのワークシート上での定数や、プロシージャや関数をワークシートのモジュールに置いています。そして、その定数や関数などをユーザーフォームのイニシャライズなどで使いたいと思いますが、ユーザーフォームのモジュールはワークシートのモジュールとは別なので、使えません。他への影響を考えると、標準モジュールには、置くのは不適切だと思います。 特定のワークシート上でのみ使うユーザーフォームと、そのワークシートとで、共通の定数や関数などを使う方法は、あるのでしょうか。どのようにすればよいのでしょうか。

  • Vbaで条件分岐、ワークシート名で振り分け

    Vbaに不慣れです。 ワークシート名が「りんご」と「イチゴ」だと仮定して。「イチゴ」のワークシートが無い場合は「りんご」のワークシートがアクティブになる方法を教授頂ければ助かります。

専門家に質問してみよう