• 締切済み

[EXCEL]外部エクセルの値の参照

複数のエクセルファイルがあり、それぞれパスやファイル名が異なります。それぞれのファイルのパスの一覧の情報値を元に、各ファイルの指定セルを取得する関数はないでしょうか? indirect関数を用いた場合、そのファイルを開いておかなければならい欠点があるため、良い方法があればアドバイスを頂ければと思います。

みんなの回答

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

関数ではないが、 VBE画面を開き、標準モジュールに下記を貼り付け、実行する。 Sub test01() Set moapp = CreateObject("Excel.Application") ' moapp.Visible = True Set wb = moapp.Workbooks.Open("C:\Documents and Settings\XXX\My Documents\社員1.xls") MsgBox wb.Worksheets("Sheet1").Range("A18") End Sub Sheet1のA18のセルの値が表示され、ステータスバーには、2つめのエクセルは出ません。moapp.Visible = True とすると違ってきます。 Open()内のパス・ファイル名を色々変えて、重ねて実験してみて下さい。結果はどうでしょうか。 >そのファイルを開いておかなければならい 上記もあくまで見かけだけのことで、 (1)コンピュターの大原則の、メモリに外部記憶装置のディスクの情報を読み込まないと、中身を知ることができない。 (2)エクセルファイルは、そのファイル・フォーマットを読めるソフト(通常はMSエクセル、またはそのインサイド知識のある技術者がエクセルを読む目的で作ったソフト)を起動しないと、適切に処理(データを再現)できない。 ので、できるという、変な幻想を抱かないこと。 通常のエクセル関数は、質問のような、そこまで考えてはいないと思うので、実現不可能かと思う。 ーーー 上記のユーザー関数化 Function aaa(a) Set moapp = CreateObject("Excel.Application") ' moapp.Visible = True f = "C:\Documents and Settings\OTO\My Documents\" Set wb = moapp.Workbooks.Open(f & a) aaa = wb.Worksheets("Sheet1").Range("A18") End Function (A18の部分は適当なセルに変えること) を標準モジュールに貼り付ける。 開いているワークシートのセルで =aaa("社員1") と入れると、セルの情報がセットされるでしょう。

h-g-s
質問者

お礼

>imogasi様 遅くなりましたが、ありがとうございます。 やはりVBAなりVBSで組み込まなければならないですね。 確かに言われている通り、PCの原則を考えてみればExcelでそこまでを実現していそうにはないですよね。 全てを動的にExcelの関数のみで処理しようとしたのがそもそもの間違いでした。とりあえず、Hyperlinkでファイルを開く程度で留めておくことにしました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル外部リンク参照について

    エクセル外部リンク参照についての質問です。 vlookup関数で、範囲を指定するときに、シート・ファイル名をセルに入力した文字から判別させたいので、INDIRECT関数を使用したのですが、これだと参照元のファイルを閉じるとエラーになってしまい、 また、外部リンクの更新もできません。 外部リンクの更新が可能で、シート・ファイル名はセルに入力された文字を参照し、 vlookup関数のように検索値から値を返せる方法はありますでしょうか。 ※現在入力している数式を添付させて頂きます。

  • excelでの外部参照について

    社内で以前に作成されたファイルのため詳細がわからないのですが、他のファイルへの外部参照について教えてください。 バージョンはExcel2002 sp2です。問題のファイルはネットワーク上にある共有ホルダーにあります。セルで「=IF($A1=0,0,$A1*'\\サーバ名\フォルダー名1\フォルダー名2\[ファイル.xls]シート名'!B1)」という式が設定されています。このファイル(参照しているファイルも含めてフォルダーごと)を自分のPCのデスクトップにコピーしたところ、ある一部のセルでのみ、「=IF($A1=0,0,$A1*'C:\フォルダー名2\[ファイル.xls]シート名'!B1)」というふうに勝手にパスが変わってしまうのです。 「編集」-「リンクの設定」でいちいち直しているのですが、元の場所からコピーしても、パスが変わらないようにしたいです。または、コピーする時はフォルダーごとコピーするので、それに合わせて「\\サーバ名」がコピー先のドライブ名に変わるようにしたいです。元のファイルの式を眺めても違いがわからず、何故一部のセルの式だけ書き換わってしまうのかわからず困っています。 いろいろ検索しましたが、回答が見つけられず、質問させていただきました。ご教授ください。

  • EXCEL2000で外部参照を動的にしたい

    外部参照したい場合、 ='D:\2002\05\[aaa.xls]sheet1!'A1 のように指定しますが, ファイルのパスをあるセルに "D:\DATA\2002\05\" の様に定義しておき、 ファイルパスを定義したセルの内容を "D:\DATA\2002\06\" とかに変える事によって、 外部参照の対象を変える事はできるのでしょうか?

  • エクセルでセル参照元のファイル名に*を使いたい

    お世話になります。 別ファイルのエクセルシートの特定のセルを参照させたいのですが、下記のようにファイル名の後にワイルドカードを使う方法はないのでしょうか? =[HH一覧表.xlsx]Sheet1!$B$5 ⇒ =[HH一覧表*.xlsx]Sheet1!$B$5 「HH一覧表 1月・・・」というようにファイル名がHH一覧表から始まる複数のファイルが有って、そのファイルを開いた時に別のエクセルに指定のセルを参照させたいのですが、何か方法は無いでしょうか? VBAのコードは教えてもらったのですが、ハードルが高く簡便法を探しています。

  • Excelの外部参照が・・・

    Vlookupに外部参照を入れてデータを引き出しています。ブックはLAN上のPCに付けている外付けハードディスクに保存しています。参照先は同じドライブ内の一つ上のフォルダにあります。 これまで何の問題もなかったのですが、外付けハードディスクの接続元をLAN上の別のPCに換えたところ、うまく計算が出来なくなりました。 「編集→リンクの編集」を見ると、参照先のパスの先頭に古いPC名が残っているので、「ファイルが見つかりません・・・」と出るのは理解できます。手動で参照元を修正すると、問題なく計算してくれます。 ところが、Vlookupの検索値しだいでは修正しなくても正確に計算結果が表示されることもあります。またエラーがでるときも、N/Aだったり0が出るだけだったりと、一貫性がありません。外付けドライブの接続元を変更したことでアドレスが変わったというなら、一律でエラーが出てもよさそうなものです。しかも以前にも同じように外付けハードディスクの接続元を変えたことがあるのですが、そのときは一切問題は発生しませんでした。「何で???」と言いたくなります。 =vlookup(検索値、範囲(名前を使用)、列番号) ※検索の型は指定していません。人から引き継いだファイルなので、今回のトラブルで"FALSE"がないことに初めて気が付いたのですが・・・。これが悪いのかと思い、"FALSE"を入れても、やはり「ファイルが見つかりません・・・」となって、結局ファイルを指定しなければなりません。 式の型はこの通りですが、範囲のところで、ファイル名とセル番地ではなく名前を使用したのがまずかったのでしょうか? 以上のような事態が発生しているのですが、どなたか原因の分かる方はいらっしゃらないでしょうか。 また、一括で外部の参照先を指定しなおす方法はないでしょうか。 よろしくお願いします。

  • エクセルで複数ファイルからデータを参照する時

    60個位の同じひな形のエクセルファイルと、 各ファイルの中のデータを一覧にした1つのファイルがあります。 一覧表のファイルに、エリアごとの行を作成し、 各ファイルの同じ場所のセルからデータを参照する式を入れているところですが、 それぞれ違うフォルダにある参照元のファイルを開いて 参照先に1つ1つ参照式を入力しているのでは いつまで経っても終わりません。 また、東京の行に入れた「フルパス・エクセルファイル名・セル番地」の参照式をコピーして、 フォルダとファイル名をほかの地域に置換したらどうかと思ったのですが、 いちいちファイルを選ぶウィンドウも出てきてやはり手間がかかってしまいます。 シートの構成を変えるわけにもいかず、 実際は参照するためにデータを引っ張ってくるセルはもっと多いため、途方に暮れています。 何か良い方法はないでしょうか? 急ぎのため、あまり複雑ではない方法だととても助かります。

  • エクセルのファイルパスの所定のセル値を参照する

    いつも大変お世話になっております。 エクセルのファイルのフルパスを別のBookのシートの決まったセル(T24)に貼り付けたらパスで指定したエクセルシートの指定のセル B10、D13:D25をE22、N28:N40に転記されるようにしたいのですが。 (D24とN39は空白セル) 元シート 転記シート B10 E22 D13 N28 ・ ・ ・ ・ D25 N40

  • INDEX関数の参照範囲にセルを指定する方法

    INDEX関数で別のエクセルファイルからデータを取得したい。 現状、ファイルパスを直接指定してデータを取得しておりますが ファイルパスを入力したセルを参照範囲に指定してデータを取得できるようにしたいです。 INDEX関数を入力するエクセルファイルをFile①、 別のエクセルファイルをFile②とする。 File②のファイルパスをFile①のA1セルに入力し、 INDEX関数の引数にA1を指定してデータを取得することはできますか?

  • エクセルでフォルダ内のBookのセルの参照

    いつもお世話になっております。 決まったフォルダ内の複数のBook「個別情報(製品名)」のフルパスを別のBook「リスト」のA列に入れると、「個別情報(製品名)」のシート(規格)の指定のセルを「リスト」のシート(規格一覧)に行方向に引っ張ってくるようにしたいのですが。 1度に参照するシートは5-10枚。 参照するセル番地は決まっていて、多いと15個程度。 参照セルは「リスト」のシート(規格一覧)の最下行のセルに入るようにしたい。 閉じたままのBookのシートを指定して、セル参照が出来ることを少し前に知ったのですが、当方には難易度が高そうで躊躇していましたが最近コロナで時間が出来たのでチャレンジしてみようかと。 当方永遠のVBA初心者ですのでその辺もご配慮の上よろしくお願い致します。

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

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

このQ&Aのポイント
  • MFC-J6983CDWを使用して印刷する際、A4を指定したにも関わらずA3で出力される問題が発生しています。
  • また、使用中にWiFiが接続しなくなり、チャットで修正できたものの、A3とA4の設定通りに稼働しない問題もあります。
  • お使いの環境はWindows11で、無線LAN経由で接続されています。
回答を見る

専門家に質問してみよう