- 締切済み
同一フォルダ内の複数ファイルから特定の部分だけ抽出する方法
社内アンケートの分析を任されて エクセルで回答を求めたのですが、回答者が多すぎて、 コピペで対応できない状況です。 全て同じ行と列に書き込まれたデータなのですが、対応方法はありますか、教えて下さい。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
OKWEBの質問#595745に私の回答が載っています。 これでエクセルワークシートのA列に、あるフォルダの中のブック名のリストが出来ます。これをやってファイル名がリストされるかやって見てください。 それから#2のプログラムと結合です。 #595745のプログラムの実行でファイル名が1つ掴めたプログラムのポイントのあとに、f = "c:\my documents\" & fn(i) 以下を組み合わせれば良いのですが、パス、フルパスの問題とか、必要なちょっとしたVBAの修正が出来るでしょうか。 テストが必要だが、この型の問題は回答者側でファイルを沢山作るのは大変なので、やりにくいんです。
- imogasi
- ベストアンサー率27% (4737/17070)
3つのファイルのSheet1のA1をbook1のA列に集めました。Arrayのところを、同一フォルダ内のファイルを取り出すように、プログラムを組みかえると質問のケースが出来そうです。 1つのフォルダ内のファイル名を捉えるVBAは以前に 回答したことがあります。 Sub test01() i = 1 fn = Array("", "test01.csv", "test02.csv", "test03.csv") For i = 1 To 3 f = "c:\my documents\" & fn(i) Workbooks.Open (f) ActiveWorkbook.Sheets(1).Activate Workbooks("book1").Sheets("sheet1").Cells(i, 1) = Cells(1, 1) Workbooks(fn(i)).Close Next i End Sub
補足
回答ありがとうございます googleでArray関数について調べてみましたが 理解不可能でした 同一フォルダの名前を”アンケート回収”としている 場合どのようになるのでしょうか ちなみに 私の環境はmacですので 5行目の f = "c:?my documents?" & fn(i) を f = "desktop" & fn(i)にすればよいのでしょうか
マクロやそういったプログラムを作って自動化。 これが一番楽だとは思うのですが、 いかんせんどのような形式のアンケートなのか わからないのでちょっと回答に躊躇しています ただ、アルゴリズム的にはこうなるでしょう。 あらかじめフォルダ内に全てのExcelのファイルを おいておく 新たなブック/ファイルを作成 質問ごとにシートを作成 プログラム内のフォームでフォルダを指定する そのフォルダ内にエクセルのファイルがあるか確認 ファイルがなければプログラムを終了する そうでなければ エクセルファイルを読み込む(A) 新たなブック/ファイルに書き込む (A)を繰り返す。 プログラム、気が向いたら作ります。
補足
回答ありがとうございます アンケートのファイルの名前は ”0001.xls” ”0002.xls"・・・・・・”0322.xls”です アンケートのファイルは、 Sheet1からSheet3までで構成されていますが使うのはSheet1のみです。 さらに、Sheet1のF2からI29を抽出し まとめてコピペするSheet(以下、統合Sheet)のAからABの列に 上から順に4列ずつ書き込む。 作業を自動化したいのですが。 よろしくお願いします
お礼
回答ありがとうございます 早速試してみます