Некоторые указатели, как идти о решении :
Сначала перечислите файлы, используя FileSystemObject.
Set fso = CreateObject("Scripting.FileSystemObject")
set fld = fso.GetFolder("path\to\my\folder")
For Each file in fld.Files
If file.Name Like "*.csv" Then LoadFile file.Name
Next
Объявить fso
, fld
, file
в Object
. LoadFile
будет функцией, которую вы должны написать, которая обрабатывает один файл. Он будет выглядеть примерно так:
Sub LoadFile(filename as String)
dim buffer() as variant
dim wb as workbook, ws as worksheet
dim i as Long, beginrow as long, endrow as long
Set wb = Workbooks.Open(filename)
Set ws = wb.Worksheets(1) ' .csv always has 1 worksheet
buffer = ws.Range("A1:A10000") ' put a sensible upper bound here
for i = 1 to 10000
' replace (..first..) and (..last..) with your search interval
if buffer(i, 1) <= (..first..) Then beginrow = i
if buffer(i, 1) < (..last..) Then endrow=i
next
' now beginrow and endrow hold the interval to cut
ws.Cells(beginrow, 1).Resize(endrow-beginrow+1, column_count).Copy destination:=(... to be determined ..)
wb.Close
End Sub
Функция открывает файл; затем ищет первый столбец для копируемого интервала; затем копирует ячейки и закрывает файл.
Код не может быть выполнен как есть, но мы надеемся дать вам правильные идеи.
1. Запишите себя, используя данные ► Получить внешние данные ► Из текста затем просмотрите код, чтобы посмотреть, как превратиться в автоматический цикл. 2. Вернитесь и отредактируйте свой вопрос, чтобы включить свои усилия, если у вас возникнут проблемы. – Jeeped