• ベストアンサー

EXCELで他のEXCELファイルからデータ参照

こんにちは。 タイトルに書いたとおり、他のEXCELファイルからのデータ参照の仕方を教えて下さい。 具体的には、 『AというEXCELファイル上のA1:A10に、 任意のEXCELファイル上のA1:A10をコピペする』 というマクロが組みたいです。 任意のEXCELファイルの選択を行う・・・という文の組み方が全く分からない状態です。 ネット上を探しまわっても、よく分からなくてお手上げ状態です。 VBAについてド素人なので優しく教えて頂けると嬉しいです。

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

  • ベストアンサー
  • jA6uDWNL
  • ベストアンサー率28% (4/14)
回答No.2

Dim fileName As String fileName = Application.GetOpenFilename Dim book As Workbook Set book = Workbooks.Open(fileName) Workbooks("Book1.xlsm").Sheets("Sheet1").Range("A1:A10").Value = book.Sheets("Sheet1").Range("A1:A10").Value book.Close 修正しました。 ファイル選択のダイアログであれば「Application.GetOpenFilename」という関数があります。 2行目でファイル選択ダイアログが表示されます。詳しい説明は参考URLを見てください。 ファイルを選択したあとにfileNameにファイルパスが返ります。

参考URL:
http://www.happy2-island.com/excelsmile/smile03/capter00803.shtml
daigakusei000
質問者

お礼

迅速な対応ありがとうございます!! しかし、『インデックスが有効範囲内にありません』と出てきてしまいます。 ん~・・・。

その他の回答 (2)

  • jA6uDWNL
  • ベストアンサー率28% (4/14)
回答No.3

Workbooks("Book1.xlsm")の部分ですが、コピー先がAというファイルなのでWorkbooks("A.xlsm")ですかね。 また、拡張子の部分「xlsm」はご自分の環境に合わせてください。「xls」かもしれません。

daigakusei000
質問者

お礼

ありがとうございました!! 本当に助かりました!!!

  • jA6uDWNL
  • ベストアンサー率28% (4/14)
回答No.1

Dim book As Workbook Set book = Workbooks.Open("C:\B.xlsm") Workbooks("A.xlsm").Sheets("Sheet1").Range("A1:A10").Value = book.Sheets("Sheet1").Range("A1:A10").Value book.Close 他にもやりかたがあるかもしれませんがこれで可能だと思います。 これは「C:\B.xlsm」の「Sheet1」の「A1:A10」の値を「A.xlsm」の「Sheet1」の「A1:A10」にコピーします。 2行目の「C:\B.xlsm」が任意のファイルです。 このファイルパスを変えることで対象のファイルが変わります。 3行目の「=」より右側がコピー元です。 例えば、book.Sheets("Sheet2").Range("B1:B10").Valueのようにすれば、 コピー元の対象が「Sheet2」の「B1:B10」に変わります。 左側はコピー先です。 4行目は任意のファイルを閉じています。 これを記述しなかった場合は任意のファイルが開いたまま残ります。

daigakusei000
質問者

お礼

早いお返事ありがとうございます! しかし、私の言う”任意のファイル”というのは ポップアップのようなものが出てきて、自分で指定したファイルのことを言っていて、「C:\B.xlsm」など予め指定したファイルではないのです。 ん~・・・。 伝わりますでしょうか?

関連するQ&A

  • 【エクセルVBA】ファイル参照後にデータ取り込み

    はじめまして。マクロ素人&勉強中です。 現在、メインプログラム(エクセルVBA)から、他のフォルダ内にある 複数の読み込み用データ(EXCEL)からひとつを選択し、データの取り込み作業をマクロ化したいと考えております。 例えば、読み込み用データ1のEXCELのRange("A2:A3")を メインプログラムのRange("C5:C6")に値を転記させるようなイメージです。 動作としましては (1)メインプログラムの「ファイル参照ボタン」より、読み込み用データをひとつ選び開く  ※ここまでは、msoFileDialogOpenで作成しました。 (2)メインプログラムの「取り込みボタン」にて、開いた読み込み用データの値をメインに転記  ※マクロの記録にて実施したため、読み込み用データ2や3・・・には適応できず困っております。 何か良いアドバイスがございましたら、何卒よろしくお願い申し上げます。

  • エクセルで、シートからの参照と、他ファイルからの参照と、どちらにするか

    エクセルで、シートからの参照と、他ファイルからの参照と、どちらにするか迷っています。 約100×100セルのシート4枚のさまざまな数値を1シートに参照させてまとめています。各シートはsumとか簡単な計算式を使っているだけで、マクロなどはわからないので使っていません。 さらに参照元が5シートほど増えるのですが、同一ファイル内でシートを増やすか、別ファイルにしてそこから参照するか、迷っています。今とくに動作が重いということはありません。 1ファイルでシートを増やすと、管理はらくだけど各シートへの移動がめんどう。 ファイルを分けると、、、 どちらがおすすめでしょうか?

  • エクセルでファイルメーカーのデータを参照

    エクセルからファイルメーカーのデータを参照することはできるのでしょうか?またはマクロでデータをインポートできますか?

  • Excelでの外部ファイル参照

    環境:windowsXPPro、Excel2000 初めまして。 Excelの外部ファイル参照で悩んでいることがあり解決方法を模索中です。 基礎値.xls、集計.xls というBookがネットワーク上のファイルサーバーにあるのですが 集計.xlsに基礎値.xlsの値を参照する式がセルに設定されています。 [=vlookup(a1,'\\server\[基礎値.xls]Sheet1'!$A$1:$B$50,2,false)] 2つのファイルが同じサーバーのフォルダーにある場合は問題ないのですが、 集計値.xlsを各ローカルPCに移動して使用したところ基礎値.xlsの参照先が [=vlookup(a1,'c:\job\[基礎値.xls]Sheet1'!$A$1:$B$50,2,false)] となってしまいサーバー上のファイルを参照してくれません。 VBAなどで細工すれば解決はすると思いますが、マクロ・VBAを使わないで運用しなくてはなりません。 ファイルを移動させても参照先フォルダーを固定させるよい方法はないでしょうか?

  • EXCELで外部ファイルを参照したい

    EXCELで外部のテキストファイルを相対アドレスで参照したいのですが、マクロでないとできないのでしょうか。 たとえば、 他のファイルを参照するのは、「データ」→「外部データの取り込み」でできるのですが、特定のアドレスかファイル(絶対アドレス)しかできません。 (例えば同じフォルダ内にあるa.txtを参照したいときは、./a.txtみたいに。) どなたかわかる方、教えてください。

  • エクセルで他のファイルのセルを相対参照したい。

    エクセルファイルAとBが別々のフォルダにあります。Aの中でBのセルを参照したいので、Aの中のセルに「=」を書き、そのままBのファイルの該当セルをクリックし、リターンを押しました。 すると、 「='C:\Documents and Settings\USERNAME\デスクトップ\フォルダ名\サブフォルダ\サブサブフォルダ\サブサブサブフォルダ\[エクセルファイル名.xls]シート名'!E8」 こんな感じの値が代入されて希望通りの結果になりました。 このAとBのフォルダ構造を維持したまま別の場所に移動させたいのですが、「='C:\Documents and Settings\USERNAME~~~」と言う感じの絶対参照になっていますのでエラーになってしまいます。 この部分を相対参照で記述できれば移動ができると思うのですが方法がわかりません。 どうしたらいいでしょうか。 どこかのセルにフォルダ位置を書いておいて間接参照みたいな方法でもいいのですが・・・ VBAでは"\..\~~~"みたいな感じで相対参照ができるようですが、大げさななのでVBAまでは使いたくないです。

  • エクセル VBA 別エクセルファイルを参照

    A1111 B1111 N1243 F2144 のように一定のデータを連続して入力された エクセルファイルと 別のエクセルファイルで一致するデータを探す マクロを作っています 別のエクセルファイルを参照するよい方法が 分かりません、どなたか教えてください。

  • エクセルのマクロで作成した関数を他のエクセルのファイルから参照できるのですか?

    エクセルVBAに関して質問です。 a.xlsというファイルに複数のシートがあり すべてのシートにあるデータと「計算」ボタンがあります。 「計算」ボタンを押下すると、マクロが実行され 計算結果が同じシートに表示されます。 データの内容はシートごとに違いますが、 「計算」ボタンで呼び出したいマクロはすべて同じです。 この「計算」ボタンを押すと実行されるマクロを b.xlsに記述したいのですが、 (他のエクセルのファイルにも使いまわしたいので) そのようなことは可能なのでしょうか。 またどのようにマクロを記述すればこのマクロを 呼び出すことができるのでしょうか。 分かりにくい文章で申し訳ございませんが ご教授くださるとうれしいです。

  • エクセルVBAで、任意指定のファイル名を取得する方法を

    教えて下さい。 ファイル(エクセルブック)を数個開いています。そのうち基本となるファイル(便宜上基本ファイルとします)は常に開いていて、後の数個の作業ファイルを開きます。(作業ファイルはその都度入れ替わり固定のファイルではありません)  基本ファイルを、アクティブな状態でエクセルVBAマクロを走らせます。 そのマクロ実行中に、『ある作業ファイルの任意のセル(任意のセル)をクリックして、そのファイル名とシート名とセルのアドレスとそのセルの値を取得』して、基本ファイルの任意のセル(例えば基本ファイルのsheet1のセルA2~D2に)に記入したいのです。 分かりにくい文で申し訳ないですが、特に上の『 』内の部分です。 どのようにマクロを記述すればいいのか分からないので、教えて下さい。宜しくお願いします。

  • excel INDIRECT 他ファイル参照

    INDIRECTの関数を使って,他のエクセルファイル(以下Bファイル)を参照すると, Bファイルを開いているときは正しく数値を表示しますが, Bファイルを閉じるとエラー表示になります。 回避する方法は無いでしょうか? (元ファイルと,Bファイルの両方から参照先に関する情報を得ているので,INDIRECT関数は,必須かと思っています) 参考までに3種類試したソースを示します。 できれば3は避けたいと考えています。 ご意見よろしくお願いします。 1:=INDIRECT("'[★★★Bファイル.xlsx]"&$A27&"'!o$7") エラー表示になります。 2:=INDIRECT("'"&MID(CELL("filename",$A$1),1,FIND("[",CELL("filename",$A$1))-1)&"[★★★Bファイル.xlsx]"&$A26&"'!o$7") エラー表示になります。(パスまで含めて参照) 3:='C:\Users\test\[★★★Bファイル.xlsx]213旅費'!O$7 正常(常に数値を表示します)

専門家に質問してみよう