質問: vbaでエクセルに別のエクセル内の値を取り込む 前提: ・あるフォルダ下に30~50のエクセルファイルが格納されている。 ・それぞれのエクセルファイルは全く同じフォーマットである。 ・エクセルファイルは複数(5~8)のシートで構成されている。 実現したいこと(今回ご教授いただきたいこと): 1. 上記エクセルファイルのあるひとつのシートを別フォルダに格納されているエクセルシートの ひとつのシートに一括で取り込みたい。 または 2. 上記エクセルファイルにあるひとつのシートをアクセスに一括で取り込みたい。 ちなみに集計したいデータはdbテーブルの形をしています。 つまり、本来50ほどあるエクセルファイルのあるシートを一つずつ50回「アクセスへエクスポート」する 作業をvbaで実現したいのです。 1.であれば、すべてを取り込んだエクセルファイルをアクセスへエクスポートするつもりです。 vbaは素人なので(ま、素人なのはvbaに限りませんが)ノーアイディアです。 何とぞよろしくお願いいたします。
回答: excelのバージョンがわからないのですが こんなんで どうでしょう? option explicit const data_path = "d:\tess\data\" const gfile = "制御.xlsm" '/* 書き込み先のブック const gsheet = "sheet1" '/* 書き込み先のシート dim lrows_cnt as long sub main() lrows_cnt = 1 dim strmsg as string dim strfn as string '/* ファイルを検索する strfn = dir(data_path & "*.xlsx") do while strfn <> "" strmsg = strfn '/* ファイルが見つかった call yexcel(cstr(strmsg)) strfn = dir() loop end sub sub yexcel(sfile as string) workbooks.open data_path & sfile, readonly:=true dim ii as integer for ii = 1 to workbooks(sfile).worksheets.count with workbooks(sfile).worksheets(ii) dim isub_row as integer: isub_row = 1 do until workbooks(sfile).worksheets(ii).cells(isub_row, 1) = "" '/* 書き込み excel workbooks(gfile).worksheets(gsheet).cells(lrows_cnt, 1) = _ workbooks(sfile).worksheets(ii).cells(isub_row, 1) workbooks(gfile).worksheets(gsheet).cells(lrows_cnt, 2) = _ workbooks(sfile).worksheets(ii).cells(isub_row, 2) ’/* この辺に アクセスのインサトーと処理を書く。。。。。 lrows_cnt = lrows_cnt + 1 isub_row = isub_row + 1 loop end with next ii ' <使用例 特定のブックを閉じる> workbooks(sfile).close end sub