• ベストアンサー
  • 困ってます

Excel VBAで他のExcelファイルのデータ取得

Excel初心者です。 Excel VBAで他のExcelファイルのワークシートのデータを取得するのにはどうしたらいいのでしょうか。 よろしくお願いします。

noname#11157
noname#11157

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数1720
  • ありがとう数3

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

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

Book-AからBook-Bを参照する例を書いてみました。 Book-Bが開いていなければ、Book-Bを開いています。Book-BのパスとBook名はセットして下さい。 Book-Aの標準モジュールに貼りつけます。 Sub SansyoBook()   Dim wbA As Workbook 'Book-A   Dim ws1A As Worksheet 'Book-Aのシート1   Dim wbB As Workbook 'Book-B   Dim ws1B As Worksheet 'Book-Bのシート1   Dim wbBpath As String 'Book-Bのパス   Dim wbBname As String 'Book-BのBook名   Dim wbBOpenFlg As Boolean 'Book-Bを強制的に開いたらTrue   'Book-BのパスとBook名   wbBpath = "C:\・・・・\・・・\・・・\" '自分で定義します   wbBname = "okBook2.xls" '自分で定義します   Application.ScreenUpdating = False   'Book-AとBook-Aのシート1を定義   Set wbA = ThisWorkbook   Set ws1A = wbA.Worksheets("Sheet1")   'Book-Bが開いてなかったらエラールーチンで開く   On Error GoTo ErrorHandler   'Book-BとBook-Bのシート1を定義   Set wbB = Workbooks(wbBname)   On Error GoTo 0   Set ws1B = wbB.Worksheets("Sheet1")   '//////////////// 参照例 ///////////////////////////////////   'Book-Aのシート1のA1に、Book-Bのシート1のB1を書き込み   ws1A.Range("A1").Value = ws1B.Range("B1").Value   'Book-Aのシート1のA2~A10に、Book-Bのシート1のC1~C9を書き込み   ws1A.Range("A2:A10").Value = ws1B.Range("C1:C9").Value   '////////////////////////////////////////////////////////////   'Book-Bを強制的に開いたら閉じる   If wbBOpenFlg Then     wbB.Activate     wbB.Close   End If   wbA.Activate   Application.ScreenUpdating = True   Exit Sub ErrorHandler:   'Book-Bが開いてなかったら開く   Workbooks.Open wbBpath & wbBname   Set wbB = Workbooks(wbBname)   wbBOpenFlg = True   Resume Next End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

nishi6さん、ありがとうございました。 うまくいきました。

関連するQ&A

  • Excel VBAで初心者です。

    Excel VBAで初心者です。 他のExcelファイルのワークシートのデータを選択して取得したいのですが Aファイルのシート1のセルA3に入力されている月が4~11と入力されていた場合 ファイル名「B」を、月が6~1が入力されていた場合、ファイル名「C」のデータを 見にいき、更に Aファイルのシート1のセルA1に入力されている西暦と、セルA3に入力されている月が B又はCファイルのシート名[西暦(月)]もしくは平成○年○月度と表示されている(2001/8/1)月 からマイナス1したものとマッチさせて、あったらその中のセルデータを Aファイルに表示させたいと思っています。 今はファイル名と場所を強制的に開くように指示してある状態ですが、 上記の希望のように選択してデータを表示するようにしたいのです。 VBAでは無理なのでしょうか? もしやり方がありましたら、ご指導いただきたくお願い申し上げます。

  • EXCELのVBAでの他EXCELデータ取得&表示

    EXCELのVBAを使い、実行したEXCELのシートに他のEXCELから読み込んだデータを取得&表示させたいと思っています。 取り込むEXCELファイルは、フォルダに格納された複数の同フォーマットのデータになります。 指定したフォルダの中の全てのEXCELファイルのデータを読み込んで、 実行したEXCELファイルのシートに複数行書き込んでいくような形になります。 機能として必要なのは以下の通りです。 ・取り込みファイルの保存されたフォルダの選択 ・選択したフォルダ内のファイルを開き、VBA側で設定した箇所のデータを読み込み、それを実行側のシートに出力する。(1ファイルにつき1行表示させる形。読込元と出力先のデータの位置関係は違います。色々入力されているファイルの必要部分だけを抜き出し、一行に出力する感じです) ・フォルダ内の全ファイルに対して同じ処理を繰り返す。(出力先の行は1行ずつ下にずれる) このようなVBAはどのように作ればよろしいでしょうか?

  • ExcelのVBAで、他のExcelファイルのセルのデータを取得

    ExcelのVBAで、他のExcelファイルのセルのデータをファイルを実際に開かずに取得する方法はありますか? Workboks.openを使わずに、具体的にどうすればいいのでしょう? (例)  AAA.xls のセル"C5"に BBB.xls のセル"B3"のデータを入力したい場合。 (AAA.xlsにマクロを起動するボタンがある) ただし、BBB.xlsの最初の3行は空白です。

  • 他のワークシート名の取得方法 (VBAを使用せずに)

    VBAを用いずに、ワークシート関数のみでワークシート名を取得できないか探しています。 自分のシート名は、以下の出力結果の一部より取得することができました。 =CELL("filename") しかし、他のシート名を取得する方法が思いもつきません。 VBAを用いずにシート名を取得することはできないのでしょうか?

  • excelでのVBAの組み方について???

    EXCELでVBAを使ってシートを作成しようと考えています。ワークシートを大量に増やす方法と、別のシートを作成し、互いにリンクをかける方法では、どちらが、使用上、また、データ量的によろしいのでしょうか。ちなみに、一つのファイルに大量のシートで組み込んだ場合、データ量が大量になるかと思いますが、ファイルを開く時など、時間的にどうなのかなと思いまして・・・。教えてください。

  • EXCEL VBAで別ファイル作成

    エクセル97です。 エクセルファイル AAA.xls のすべてのワークシートのうち、セルA1に TRUE がはいっているもの、(枚数はそのときにより不定です。)のみをコピーして、別のエクセルファイルを作成したいのです。 その際、新しいファイルに貼り付けるのは書式と値のみで、シート名は 元ファイルのシート名と同じにしたいのです。 どのようなVBAを書けばよいかご教示ください。 (AAA.xls にはワークシート以外にグラフシートやダイアローグシートが入っています。)

  • 複数のCSVファイルからのデータ取得(VBA)

    エクセルVBAで、エクセルの指定シートに複数のCSVファイルからデータを取得する方法を ご教授お願います。 エクセルの指定シートの指定されたセルに、複数のCSVファイルから指定箇所のデータを 取得し転送する方法を考えていますが、どうもうまくいきません。 たとえば、 CSVファイル(1) A5(A)           A10(B) CSVファイル(2) A5(C)           A10(D)      CSVファイル(3) A5(E)           A10(F)         ・      ・      ・ と、指定されたセルからデータを取得し、 エクセルの指定シートの表に                    CSVファイル                                 (1)  (2)  (3) ・ ・ ・ ------------------------------------------- A5から取得したデータ    A   C   E ・ ・ ・ A10から取得したデータ    B   D   F ・ ・ ・ ------------------------------------------- と、いうように転送して貼り付けていきたいです。 いろいろ調べてみたのですが、このような方法が見つけられませんでした。 ぜひ、皆様のお知恵をお貸しください。 宜しくお願い致します。

  • Excel VBA ワークシート番号の取得の仕方

    Excel VBAでアクティブシートが何枚目のワークシートかを取得する方法を教えてください。 Worksheets.Activesheet.Countとやったけどできませんでした。

  • エクセルVBAで別ファイルのデータを取得しに行ってます。

    エクセルVBAで別ファイルのデータを取得しに行ってます。 http://www.officetanaka.net/excel/vba/tips/tips28.htm の二つ目に書かれたコードを参考に作ったんですが、取得セル範囲を何も入力されてない所まで広げると何も入力されてない所は『0』と取得、表示されてしまいます。 取得した時に『0』で表示するのを避ける方法はありますか?

  • エクセルVBAでの貼付け

    エクセルを使用してのVBAについてです。 VBA初心者です。行き詰ってしまったので、質問させてください。 「データワークシート」に下記のようなデータがあるとします。    A    B    C     D 1  国    地域  都道府県   都市        2  日本  関東   東京   新宿区    3  日本  関東   東京   渋谷区 4  日本  関東   神奈川   横浜市 5  日本  関東   神奈川   川崎市 6  日本  関東   神奈川   茅ヶ崎市 例えば、C列に「東京」とあったら、 D列のデータを「東京のワークシート」のC3から順に貼り付け、 「神奈川」だったらD列のデータを 「神奈川のワークシート」のC3から順に貼り付けるようなVBAを作成したいのですが、 ループを使用しようとしたのですが上手く出来ません。 ご回答よろしくお願いします。