The Page Breaks are redone. If that's not what you want, take that part out of the code.
Copy all three into a regular Module and run the "Save_As_New_Book" macro.
I don't really know if this is what you want but try it.
Sub Save_As_New_Book()
Dim sh1 As Worksheet, tr As Long, br As Range, lr As Long
Set sh1 = Worksheets("Sheet1")
lr = sh1.Cells.Find("*", , xlValues, , xlByRows, xlPrevious).Row
tr = 10
Do
ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = "From_Row_" & tr
sh1.Range("A1:CP9").Copy ThisWorkbook.Sheets(Sheets.Count).Range("A1")
Set br = sh1.Range(sh1.Cells(10, 1), sh1.Cells(tr + 80, 1)).Find("P.TAG", , , , , xlPrevious)
sh1.Range(sh1.Cells(tr, 1), sh1.Cells(br.Row - 1, "CP")).Copy Sheets(Sheets.Count).Cells(10, 1)
Sheets(Sheets.Count).UsedRange.Value = Sheets(Sheets.Count).UsedRange.Value
tr = br.Row
Set_P_Range
If br.Row + 80 >= lr Then
ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = "From_Row_" & tr
sh1.Range("A1:CP9").Copy ThisWorkbook.Sheets(Sheets.Count).Range("A1")
sh1.Range(sh1.Cells(tr, 1), sh1.Cells(lr, "CP")).Copy Sheets(Sheets.Count).Cells(10, 1)
Sheets(Sheets.Count).UsedRange.Value = Sheets(Sheets.Count).UsedRange.Value
Set_P_Range
GoTo Finish_It_Off
Exit Sub
End If
Loop
Finish_It_Off: Save_To_Desktop
End Sub
Sub Set_P_Range()
Dim lr As Long, ws As Worksheet
Set ws = ActiveSheet
lr = ws.Cells.Find("*", , xlValues, , xlByRows, xlPrevious).Row
With ws.PageSetup
.PrintArea = Range("A1:CP" & lr).Address
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
.Orientation = xlLandscape
End With
End Sub
Sub Save_To_Desktop()
Dim sh As Worksheet, shArr
For Each sh In ThisWorkbook.Worksheets
If Left(sh.Name, 9) = "From_Row_" Then shArr = shArr & "|" & sh.Name
Next sh
shArr = Split(Mid(shArr, 2), "|")
Sheets(shArr).Copy
With ActiveWorkbook
.SaveAs Filename:=CreateObject("WScript.Shell").Specialfolders("Desktop") & "\New_AAA.xlsx"
.Close
End With
End Sub
Bookmarks