• ベストアンサー

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