- ベストアンサー
Excelマクロ初心者が200個のファイルから指定データを抽出したい
- Excelマクロ初心者のため、200個のファイルから特定のデータを抽出したいです。ファイルは同じフォルダにあり、シートの構造も同じです。データの一部を新しいファイルに集計したいと考えています。
- マクロを使用して、複数のExcelファイルから特定のデータを抽出し、新しいファイルに集計する方法を教えてください。ファイル名やデータの順番は問題ありません。
- Excelにおけるマクロの使い方を教えてください。200個のファイルから特定のデータを抽出し、新しいファイルにまとめたいと考えています。ファイル名やデータの位置は異なっていても構いません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>約200個のエクセルファイルがあります。 >名前はバラバラです。 >ファイル名0002、シート1のA2のセルで記載されている >「文字」もしくは「数字」を新しいブックののA2にコピーして、ファイル名をB2記入したい。 これらの説明からは、 ファイル名を何らかのルールで解析し 「取りに行くセル番地」と「取得結果を格納するセル番地」を決める。 このように読み取れますが、 そうではなく、 単に約200あるエクセルファイルに1ファイルずつアクセスし ファイル名に依存しない、固定的に決まったシート、セル番地の値とそのファイル名を シートのA,B列にかき集めればいいのではないでしょうか。 後者であれば、 https://okwave.jp/qa/q9797851.html に似た求めなので ちょっと手直ししてポストします。いかがでしょうか? Sub sampleX() Const Path As String = "C:\Users\papa\Desktop\新しいフォルダー\" '↑:かき集める対象フォルダー Const ShName = "Sheet1" '取得する対象シート名 Const tgCell = "A1" '取得する対象セル番地 Dim buf As String Dim cnt As Long cnt = 0 buf = Dir(Path & "*.xlsx") Do While buf <> "" cnt = cnt + 1 '出力先行番号 Cells(cnt, 1).Value = _ GetCellValue(Path & buf, ShName, tgCell) Cells(cnt, 2).Value = buf buf = Dir() Loop End Sub '//--------------------------------------------------------- '// データ取得関数 '//--------------------------------------------------------- Function GetCellValue(MyPath As String, _ ShName As String, _ MyAddress As String) As Variant Dim SQL As String Dim cn As Object Dim rs As Object Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") cn.Provider = "Microsoft.ACE.OLEDB.12.0" cn.Properties("Extended Properties") = "Excel 12.0;HDR=NO;IMEX=1" cn.Open MyPath SQL = "" SQL = SQL & "select F1" & vbCrLf SQL = SQL & "FROM [" & ShName & "$" & MyAddress & ":" & MyAddress & "]" & vbCrLf rs.Open SQL, cn GetCellValue = rs("F1") rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Function
その他の回答 (2)
- masnoske
- ベストアンサー率35% (67/190)
シートが15個あるようですが,それぞれどのように纏めたいのですか? ファイル名0001、シート1のA1→新しいブックの1行目にコピー ファイル名0002、シート1のA2→上記ブックの2行目にコピー ここまではわかりますが,残りの14個のシートの扱いがわかりません. 元ファイルのシート2は,新しいブックのシート2にコピーすれば良いですか?
- masnoske
- ベストアンサー率35% (67/190)
ファイル名0001、シート1のA1のセルで記載されている「文字」もしくは「数字」を新しいブックののA1にコピーして、ファイル名をB1記入したい。 ファイル名0002、シート1のA2のセルで記載されている「文字」もしくは「数字」を新しいブックののA2にコピーして、ファイル名をB2記入したい。 都度,新しいブックを作成するということですか. あるいは,最初に作成した新しいブックに追加するということですか.
補足
補足致します。 説明不足で、申し訳ございません。 フォルダの中にそれぞれ客の名前のファイルがございます。 抽出したいデータは、そのファイルの中の特定したセルの「文字」や「数字」です。 それを一つのシートに纏めたいです。 抽出したデータを新しいブックに整理したいです。ファイル名毎に纏めたいです。 Aさんのファイルの中の特定したセルの「文字」や「数字」をセルA1に、ファイル名をセルB1に。 Bさんのファイル中の特定したセルの「文字」や「数字」をセルA2、ファイル名をセルB2に。 のような事でございます。 よろしくお願いします。
お礼
助かりました‼️