• 締切済み

Excelにて外部Excelファイルのデータを参照する方法

お世話になります。 Excelにて外部のExcelファイルのデータを参照する方法を教えていただけませんでしょうか。 具体的には、 1.Excelファイルa.xls b.xls c.xls・・・ があります。 2.a.xlsの a1 に b.xls の a1 の値を入力し、続けて a.xls の a2 に c.xls のa1・・・を繰り返していきます。上手く説明できないので、下を参照願います。 ------------------------------------------------ <a.xls> |a |b |c -+------- 1|a1|b1|c1 ←b.xls ないのa1-c1のデータ 2|a1|b1|c1 ←c.xls ないのa1-c1のデータ 3|a1|b1|c1 ←d.xls ないのa1-c1のデータ ------------------------------------------------ 上記を数百のファイル分行いたいのですが、外部ファイルを開いて該当のセルをコピーしていると非常に時間がかかります(といいますか無理でしょう)そこで、これらを数式から指定して、セルにコピーする事により、作業を効率化したいというわけです。 そのような方法がございましたら、教えていただけませんでしょうか。 よろしくお願い致します。

みんなの回答

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

VBA以外のご解答を良く理解できていませんが [Book1.xls]Sheet1!A1のBookの1とかSheet1の1の部分 は複写した時、相対的に変化してくれません。(当たり前と思っておられる方も多いでしょうが)。 それで複数ブックや複数シート参照型の本問などは算術式 (関数式)ではやりにくいですね。 Workbooks(n)(n=1-4とか)(worksheets(m)のmは1だけとして)で表せるようにして、簡単化できないかと思いました。テスト未。 dim s(5) s1=1:s(2)=1:s(3)=1:s(4)=1 p01: For j=2 to 4 For i=1 to 3 Cells(s1,i)=WorkBooks(j).Workshees(1).Cells(s(j),i) Next i s1=s1+1 Next j s(j)=s(j)+1 goto p01

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

算式だけでもできますが、説明が長くなりそうなのと数百のファイルということで、マクロにしてみます。 a.xls のSheet1のE列、F列に、参照するブックの、ドライブフォルダ名とBook名を登録します。   E列がドライブフォルダ名   F列がBook名です。   A B C D     E             F 1         C:\My Documents\・・・\・・・  test_Book1.xls 2         C:\My Documents\・・・\・・・  test_Book2.xls 3         C:\My Documents\・・・\・・・  test_Book3.xls :               : N         C:\My Documents\・・・\・・・  test_BookN.xls ファイル名の一覧は書き出しできるものとしています。 他Bookの対象シートは、Sheet1としています。 a.xls のSheet1のVBEのコードウインドウに下記マクロを貼り付けます。 (ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示します。 プロジェクトエクスプローラのSheet1をダブルクリック。出てきたコードウインドウに下記マクロをコピーして貼り付けます。) マクロを実行すると、a.xls のSheet1のA、B、C列に参照結果を書き出します。ご参考に。(当方、Excel97です) Sub TEST()   Dim myFormula As String '他Bookの参照式   Dim rw As Long '行カウンタ   'E列にドライブとフォルダ、F列にBook名があると想定!   For rw = 1 To Range("E65536").End(xlUp).Row     myFormula = "'" & Cells(rw, 5) & "\[" & Cells(rw, 6) & "]Sheet1'!"     Cells(rw, 1).Formula = "=" & myFormula & "A1"     Cells(rw, 2).Formula = "=" & myFormula & "B1"     Cells(rw, 3).Formula = "=" & myFormula & "C1"   Next End Sub

  • ka3
  • ベストアンサー率18% (36/194)
回答No.4

 『=[Book1.xls]Sheet1!$B$4』式を入れておけば、参照先ファイルを探します。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.3

#2です。 > 次に、b.xlsファイルでセルA1の内容を見てみましょう。 ごめんなさい、あわてました。(^^;) これは 「a.xlsファイルでセルA1の内容を見てみましょう。」の誤りです。 あと、この方法だと、b.xlsの内容を変えると、a.xlsの内容も変わっちゃいます。 値だけ参照したい場合は、いったん、#2の作業を行った後、シート全体をコピーし、別のシートに、形式を選択して貼り付け-値を選択、で貼り付けます。 最後に、最初のシートをシート毎削除してください。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.2

・b.xlsファイルでセルA1をコピー ・a.xlsファイルを開き、編集-形式を選択して貼り付け を選択 ・リンク貼り付けをクリック まずここまでしてみてください。 次に、b.xlsファイルでセルA1の内容を見てみましょう。 数式バーに =[a.xls]Sheet1!$A$1 って出てませんか? [ ] 内がファイル名 Sheet1 の部分がシート名 $A$1 がセルですね。($は絶対参照の記号です) ご質問内容の場合、 A列のみ上記を繰り返して元を作り、(直接、上記のように入力してもOK) $A$1 となっている部分の先頭の$を削除します。(つまり、A$1にするということ) =[a.xls]Sheet1!A$1 となったら、あとはこれを必要な列数分コピーすればOKです。 ただし、a.xls,b.xls,c.xls,…が、同じフォルダ内にあることが必要です。 別のフォルダにある場合は、[ ]内のファイル名にフルパスを記入する必要があります。 ※フルパスを記入というのは C:\Documents and Settings\Administrator\My Documents\a.xls みたいに書くことです。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

挿入、オブジェクト、ファイルからで、他のエクセルファイルを読み込んで 貼り付けて、参照しながら コピーさせたらいいんじゃないでしょうか?

関連するQ&A