Excelのことで困っています。
何かいい方法があれば教えてください。
同じフォームのエクセルファイルが約1000ファイルあり、それぞれのファイルの例えば3~5行目だけを抽出し、別のの新しいファイルにどんどん貼り付けて3~5行目だけを集めたファイルを作りたいのですが、ファイルの数が多いので、全ファイルを開いてコピペする以外にマクロか何かを使って自動で抽出できるような方法がないかと考えております。
1000個のファイル名は今はばらばらですが、必要であれば0001.xls~1000.xlsなどに変更してもよいです。
どうぞよろしくお願いします。
No.2ベストアンサー
- 回答日時:
抽出先のブックを同じフォルダに作成し、Alt+F11でVBAの画面を開き、左側のツリーからブック名を選択し、右クリックから「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。
Sub ファイルから抽出()
Dim FName As String
Dim Folder As String
Dim WB As Workbook
Dim i As Integer, j As Integer
Application.ScreenUpdating = False
Folder = ThisWorkbook.Path & "\"
i = 1: j = 1
Worksheets(1).Cells.ClearContents
FName = Dir(Folder & "*.xls")
Do While FName <> ""
If FName <> ThisWorkbook.Name Then
Workbooks.Open (Folder & FName)
Workbooks(Workbooks.Count).Worksheets(1).Rows("3:5").Copy _
ThisWorkbook.Worksheets(1).Cells(i, 1)
Workbooks(Workbooks.Count).Close
Application.StatusBar = j & "ファイル処理済み"
i = i + 3: j = j + 1
End If
FName = Dir()
Loop
Application.StatusBar = ""
Application.ScreenUpdating = True
MsgBox ("完了しました")
End Sub
Alt+F11でExcelの画面に戻ってAlt+F8からマクロを実行してみてください。各ファイルの3行目~5行目がコピーされます。
高速化のために処理中は描画を止めているので、全ての処理が終わった後に画面は表示されます。1000個もファイルがあるとかなり時間がかかると思いますが、何個のファイルを処理したかは左下に表示するようにしているので、ある程度目安になると思います。
あと、フォルダ内のブックを開いてはコピーして閉じ、ということを繰り返しているので、実行中はタスクバーがちらちらしますが、気にしないでください。
初心者の私には、大変わかりやすい説明でありがたかったです。
無事、抽出作業終了しました。大変助かりました。
ありがとうございました。
No.3
- 回答日時:
エラー処理などはしていないので・・・。
対象のファイルとは別のフォルダにブックを作成して実行して下さい。
WorkPath にファイルのあるフォルダを設定して下さい。
Sub Tenki()
Dim WorkPath As String
Dim TMP As String
Dim MaxRow As Long
Application.ScreenUpdating = False
WorkPath = "C:\パス名を記入"
TMP = Dir(WorkPath & "\*.xls", vbNormal)
MaxRow = 1
Do While TMP <> ""
Workbooks.Open WorkPath & "\" & TMP
Workbooks(TMP).Sheets("Sheet1").Rows("3:5").Copy _
ThisWorkbook.Sheets("Sheet1").Cells(MaxRow, 1)
MaxRow = MaxRow + 3
Workbooks(TMP).Close SaveChanges:=False
TMP = Dir()
Loop
MsgBox "転記が終了しました。"
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) Excelでデータを抽出するに良い方法 9 2023/02/06 12:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】シート名を取得する...
-
エクセルVBAでセルに入力したパ...
-
【Microsoft Excel】 .csv 以外...
-
excelに貼り付けた数値が勝手に...
-
EXCELのVBAで画像を選んだ順に...
-
ファイルを並び替えるときの「...
-
CSVで文字化けしてしまうのを直...
-
エディタで効率的な切り出し方法
-
EXCELファイルが開けない(-_-;)
-
エクセルからスキャナVBAで連動...
-
excel INDIRECT 他ファイル参照
-
Teraマクロで日付ディレクトリ...
-
Excelでリンクを使用すると#N/A...
-
ローマ字→カタカナへ変換(エク...
-
EXCELのセルへ、デジタル時計を...
-
エラーになってないのにVBA...
-
コマンドボタンを押すたびに大...
-
ワードからエクセルへ貼り付け...
-
エクセルVBA
-
モジュール内のマクロを全て実...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでセルに入力したパ...
-
excelに貼り付けた数値が勝手に...
-
EXCELのVBAで画像を選んだ順に...
-
Teraマクロで日付ディレクトリ...
-
ファイルを並び替えるときの「...
-
VLOOKUP関数とネットワークに置...
-
エクセル 一括リンクの解除
-
excel INDIRECT 他ファイル参照
-
エクセルファイルから指定した...
-
エディタで効率的な切り出し方法
-
PDF ファイルが開けません。
-
EXCELのマクロを使って、テキス...
-
ハイパーリンクで前回値をひき...
-
エクセルからスキャナVBAで連動...
-
EXCEL VBA ー 同一フォルダ内の...
-
CSVで文字化けしてしまうのを直...
-
エクセルマクロでファイルオー...
-
ミュージックファイルのファイ...
-
エクセルVBAでファイルを連...
-
Excel VBAで自動的にハイパーリ...
おすすめ情報