Это перебирает столбец A и находит ячейки со словом «Set».
Затем вставляется строка в строку, так что все наборы разделяются пустой строкой.
Поскольку области разделены пустой строкой, они могут быть заданы как области диапазона, поэтому мы можем циклически проходить через каждую область диапазона, копировать ее в sheet2, копировать лист 2, и он становится новой рабочей книгой, сохраняя ее как текстфайл и закройте его.
Убедитесь, что изменили расположение папки в коде и указали последнюю косую черту ()
Предположение, что лист (2) пуст, его необходимо проиндексировать, потому что код изменит имя листа.
Sub Select_Set()
Dim FrstRng As Range
Dim UnionRng As Range
Dim c As Range
Dim sh As Worksheet, ws As Worksheet
Dim RangeArea As Range
Dim fLdr As String, fNm As String
fLdr = "C:\Users\Dave\SkyDrive\Documents\TestTxtFiles\" 'folder location to save text files
Set sh = ActiveSheet
Set ws = Sheets(2)
Application.ScreenUpdating = False
With sh
Set FrstRng = .Range("A2:A" & .Cells(.Rows.Count, "A").End(xlUp).Row)
For Each c In FrstRng.Cells
If InStr(c, "Set") Then
If Not UnionRng Is Nothing Then
Set UnionRng = Union(UnionRng, c) 'adds to the range
Else
Set UnionRng = c
End If
End If
Next c
UnionRng.EntireRow.Insert
For Each RangeArea In .Columns("A").SpecialCells(xlCellTypeConstants, 23).Areas
fNm = RangeArea.Cells(1).Value
RangeArea.Resize(, 3).Copy ws.Cells(1, 1)
ws.Name = fNm
ws.Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs fLdr & fNm & ".txt", xlUnicodeText
ActiveWorkbook.Close
Next RangeArea
End With
End Sub
Вы можете удалить пустые строки
Sub reset()
Columns("A:A").EntireColumn.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub