• 締切済み

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

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

みんなの回答

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

一例です。 選択したフォルダ内の全xlsファイルを開き、開いたシートの1行目を、マクロを書いたBOOKのSheet1に上からコピペします。 Sub Sample01()   Dim myfdr As String, fname As String   Dim ws As Worksheet, wb As Workbook   Dim n As Long   With Application.FileDialog(msoFileDialogFolderPicker)     If .Show = True Then       myfdr = .SelectedItems(1) 'フォルダー取得     End If   End With   Application.ScreenUpdating = False '画面更新を一時停止   Set ws = ThisWorkbook.Sheets("Sheet1") 'このコピー先ブックのSheet1をwsとする。   fname = Dir(myfdr & "\*.xls") 'フォルダ内のExcelブックを検索   Do Until fname = Empty '全て検索     If fname <> ThisWorkbook.Name Then 'ブック名がこのブックの名前でなければ       Set wb = Workbooks.Open(myfdr & "\" & fname) 'そのブックを開きwbとする。       n = n + 1 'ブック数をカウント       wb.ActiveSheet.Rows(1).Copy ws.Rows(n) '1行目をコピペ       wb.Close (False) '保存の有無を聞かずに保存しないで閉じる     End If     fname = Dir 'フォルダ内の次のExcelブックを検索   Loop '繰り返す   Application.ScreenUpdating = True '画面更新一時停止を解除   MsgBox n & "件のブックをコピーしましました。" End Sub

shrimp16g
質問者

お礼

求めていたものにかなり近いものが出来ました。 後は少し変えれば目的が果たせそうです。 ありがとうございました。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

取り込みファイルの保存されたフォルダの選択 ChDir "\aaa\bbb" とか、 選択したフォルダ内のファイルを開き csvbook="ccc.csv" 繰り返すなら、 csvbook=Dir("*.csv") とかで、ファイル名を取得する。当然目的のファイルでなければ次を読み込ませるとか。 Workbooks.Open Filename:=csvbook とか、 VBA側で設定した箇所のデータを読み込み、 set wb1=Workbooks(csvbook) set sh1=wb1.Sheets(1) とかにして、 sh1.Range(データ範囲) をコピーするなり、読み込むなりして、 実行側のシートに出力する set wb2=Workbooks(実行側book名) set sh2=wb2.Sheets(1) とかにして、 sh2.Range(実行側データ範囲) に書き込むなり、貼り付けるなり。 csvbook=Dir() で、つぎのbookへ行くなりのくりかえし。 これでどうでしょう。

関連するQ&A

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

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

  • VBAでExcelデータの加工方法について

    Excel VBAにて、データ加工するプログラムをご教授ください。 環境はWindows7 Pro Excel2010 添付データのsheet1をsheet2の状態にするロジックです。 ・sheet1、sheet2は別シート ・sheet1の列は最終行までという形 何行あるかは不明で連続したデータが入っている。

  • VBAでテキストファイルのデータを読み込んでExcelで開く+α

    テキストファイルをExcelファイルとして読み込む事が多く、その量に加えデータの並び方が特殊な為困っております。 テキストファイルのデータの並びをExcelで上下逆順に読み込ませるにはどのようにすればいいでしょうか? また、まとめて複数のテキストファイルを上記の状態で自動的にシートごとに分けて出力させたりしたいのですが。 (例-1行目は無視) ---テキストデータ(タブ区切り)--- 0 0 10 02 11 05 02 15 01 20 25 12 15 10 ---Excelシートデータ--- 0 0 12 15 10 01 20 25 05 02 15 10 02 11

  • Excelシートを分割してcsvに出力するVBA

    すいませんが、ご教示願います。 パソコンExcelのVBAです。 Excelファイルシートの24,000行あるデータを、 任意に選択した範囲(例えば2行目から3,000行目)をcsvデータに出力する VBA構文が知りたいです。 どなたかおわかりになりますでしょうか。

  • VBAでEXCELから固定長のテキストデータにしたい

    VBAにてEXCELに展開されたデータを固定長のテキストデータに落としたい。 EXCEL側の用件 (1)シート1にボタンを用意して、ボタンをクリックしたらテキストファイルを作成する処理にしたい。 (2)シート2にデータが展開されている。 列は10個程度、行は場合によりけり(MAX65536?) 固定長にする箇所とかはわかるのですが、ボタンクリックしたらシート2を見て、セル(もしくはrange)をどのように取得すればいいのかVBAがよくわからないのです。

  • 【Excel VBA】1つのファイルにまとめる方法

    1つのフォルダの中に複数のExcelファイルが保存されています。 seat1だけを1つに集めたExcelファイルを新規で作成したいです。 ※シート1をどんどん追加させるイメージです。 ※フォルダの中に入っているExcelファイル数は毎月変わります。 手順(1)フォルダに入っているExcelシートを開く 手順(2)sheet1を【シートの移動またはコピー】新規BOOKにコピー 手順(3)フォルダに入っているExcel分繰り返す。 手順(4)シート名を変更する。    どういう風にVBAコードを記入すればいいかわからないので教えていただきたいです。どうぞよろしくお願いいたします。

  • (VBA)フォルダの中の複数のテキストファイルをエクセルに取り込みたい

    フォルダの中に複数のテキストファイルがあります。 それをVBAで1シートに1テキストファイルづつで取り込んで(区切り文字(#)、列のデータ形式(文字列)を指定して)作成済みのマクロを実行し、出力させたいのですが。。 データが大きいので5シートで1つのファイルにしたいです。フォルダの中にはテキストファイルが100ほどあるので、結果、エクセルファイルが20できればいいのですが。。 できればデスクトップに新しいフォルダが作成されてその中に出力されていくようにしたいです。 お力を貸してください。よろしくお願いします。

  • EXCEL VBA 出力先セルの取得

    お世話になります. 下記の実現方法が分からないので質問させていただきます. excelマクロにて,フォルダの容量を測定し,その結果をワークシートに出力させようと考えています. 現在,測定した内容の出力先はソース中にセルを指定していますが, ワークシート上でセルを選択し,選択したセルに出力するようにしたいと考えています. また,マクロを実行すると,「出力先を選択して下さい」といった表示を出せればと考えています. ちなみに出力データは複数件あり,選択セル以下の行へ,データがなくなるまで出力したいと考えています. 知識不足のため,抽象的な質問となってしまいますが, 有識者の方,ご存知であればご教授頂ければ幸いです. 以上,よろしくお願いいたします.

  • VBAでエクセルに別のエクセル内の値を取り込む

    前提: ・あるフォルダ下に30~50のエクセルファイルが格納されている。 ・それぞれのエクセルファイルは全く同じフォーマットである。 ・エクセルファイルは複数(5~8)のシートで構成されている。 実現したいこと(今回ご教授いただきたいこと): 1. 上記エクセルファイルのあるひとつのシートを別フォルダに格納されているエクセルシートの ひとつのシートに一括で取り込みたい。 または 2. 上記エクセルファイルにあるひとつのシートをアクセスに一括で取り込みたい。 ちなみに集計したいデータはDBテーブルの形をしています。 つまり、本来50ほどあるエクセルファイルのあるシートを一つずつ50回「アクセスへエクスポート」する 作業をVBAで実現したいのです。 1.であれば、すべてを取り込んだエクセルファイルをアクセスへエクスポートするつもりです。 VBAは素人なので(ま、素人なのはVBAに限りませんが)ノーアイディアです。 何とぞよろしくお願いいたします。

  • エクセル(EXCEL)VBAで行自動分割

    エクセル(EXCEL)VBAの質問です。数万行にわたって入力されているデータがありますが、これを1000行づつに分割して、別々の新規BOOK(またはSHEET)へコピーしていきたいのですが、これを実現するVBAを教えていただけ ないでしょうか? VBAマスターの諸兄方、どうぞ宜しくお願い致します。

専門家に質問してみよう