- 締切済み
ファイルを開かず任意ファイルのセルの値を表示する方法について。
みなさんこんにちは、色々と自分なりに調べてみたつ もりですが、解決できないのでご教示お願い致します。 エクセルで、”ファイルAのセルA1”任意に入力さ れた”ファイル名のA1”の値を”ファイルAのセル B”に表示させたいのですが、どのようにすれば良い のでしょうか? INDIRECT関数のようにファイルが開かれていることを 前提としない方法としたいのですが・・・
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Tasuke22
- ベストアンサー率33% (1799/5383)
複数の人が任意のタイミングでデータを入力 する、という時点で既にExcelは使用対象外と なります。そのようなことが出来るソフトで はありません。 ではどうするか。データベースですね。 データベースはそのような使用目的も範疇に入 っています。データベースはタイミングとか 考えなくても、データベースのマネージャソフ トが矛盾がおこらないように管理します。 WEBサーバを立ち上げて、データベースの内容を htmlで入力できるページを作成し、ブラウザで 入力したり、表示するのが一般的です。 勿論、webサーバはLAN内だけで使用できればいい です。 html+MySQL+PHPという基本パターンですね。 XAMPPでセットで手に入ります。
- MATSU2888
- ベストアンサー率0% (0/0)
スイマセン、質問では無いのですが・・・ 目的は INDIRECT の欠点を補う事に有るのですね。 (1)外部参照により他の EXCEL ファイル内のセルを参照したいが、 その参照すべきファイル名称を変数としたい。 (2)INDIRECT ならばこれが可能だが、この関数は参照先のファイルを 開いておく必要がある。しかし これは避けたい。 という事と思います(間違っていたらご指摘下さい)。 マクロが使用可能ならば、google で幾つもヒットしますが、マクロも使用できない(したくない)理由が有るのだと思います(マクロ起動により他アプリケーションへの影響を懸念するなど)。 実は私もこの実現方法を探していて このページを見つけました。 どなたか御存知の方、ご教示頂きます様 お願い致します。
- fujillin
- ベストアンサー率61% (1594/2576)
え~っと・・・・ 例えば、「ファイルCシート2 B2」に「こんにちは」と書いてあり。 ファイルBのシート1のセルA1に「ファイルCシート2 B2」と書いてあるとき。 ファイルAを開いた時にファイルBを参照して、そこに書かれている参照先(この場合ファイルC)の内容(こんにちは)をファイルAのセルC1などに表示させたい(リンクさせたい)ということでいいのでしょうか? 単純な値の受け渡しだけなので、ブックの参照を利用すれば可能ですが、2回の参照になるのでもともとのエクセルの機能にはなさそうですね。 VBAなどでも当然可能ですが、無理やりやるなら、以下の方法で可能です。 (「ファイルを開かずに」といっても、参照する以上バックグラウンドで開いていますので開いているのと同じことですし、考え方が複雑なので、その目的はわかりませんが、あまりお薦めはしません。) 1回の参照は「=[ブック名]シート名!セル」でリンクができることはご存知と思います。 (1)ファイルAの空きセルにファイルBへの参照を記載しておく。 (これで「ファイルCシート2 B2」という値は取得可能) (2)workbook_openイベントで(1)の値から参照を作成し、(例えば)セルC1の式にファイルBへの参照を記入。 (ファイルBの記入方法によっては、値の転記だけでOK) (3)記入された新しいリンクをエクセルが自動反映して、「こんにちは」が表示される。 エクセル2000で実験しましたが、(1)のリンク反映は(2)のイベント発生よりも先に処理をされているようですので、順序が逆転することはないようでした。 (2)で作成するファイルパスはフルパスかデフォルトパスの利用になりますので、ファイルBの記載の方法をファイル名だけなどとする場合は、(2)でパスを作成しなおす必要があります。 その際に、きちんと動作するためにはファイル名やシート名などのチェックもしておかないとならないでしょうね。 ↓はファイルCはファイルAと同じフォルダにあり、ファイルBにはファイル名のみ記載されているというルールを仮定して実験したマクロの例(ファイルBに入力された内容のチェックは省略) ---------------------------- Private Sub Workbook_Open() p = "'" & ThisWorkbook.Path & "\" & Replace(Sheets("シート名").Range("A10").Value, "!", "'!") Sheets("sheet3").Range("C1").Formula = "=" & p End Sub
補足
早速ながらありがとうございます。 この方法の場合、バックグラウンドで開くとの事ですので、 そのファイルを他人が開くとやはり読み取り専用で開かれる 事となるのでしょうか。 ファイルパスに注意しなければならない点、ご指導ありがと うございます。
- Tasuke22
- ベストアンサー率33% (1799/5383)
回答ではありません。 非常に込み入った「手段」を求められています。 このような場合は「目的」からの見直しをお勧 めします。 何をされたいのでしょうか?
補足
どうもすみません。 確かに込み入った手段かもしれません・・・ 集計表の使用にあたり、3人がそれぞれ任意のタイミングで集計表に データ入力するため、1ファイル複数ブックでは更新や同時アクセス に問題あるため、ファイルを分け同時作業を可能としつつ各データを 収得し集約集計させたいことが目的となります。 (苦しい面ありますが・・・) この際、通常リンクとした場合にファイル名変更時に値参照できな くなってしまいます。これを回避するには、別名のフォルダへ同名 のまま一連を入れ区分する方法ありますが、ファイル名は同じまま なので未熟な使用者では同じファイル名ばかりあって混乱しかねな い懸念を持っています。そのため、関連するファイル名を使用者の 任意の名前とできるようにし、かつデータ参照するファイル側でセ ルにその任意のファイル名を入力指定し集約集計のためのデータ参 照を可能としたいと考えております。 自分で使うにはいかようにもなりますが、PCが苦手な人達に渡す 集計表のため、中身は複雑?ですが使用者には簡潔に感じるように 仕上げてやりたい気持ちで当案件模索しております。 以 上
補足
ありがとうございます。 私のやりたい内容を解りやすくまとめていただいた感あります。 マクロは使用OKです。