There are a number of issues here:
Word is not a page layout application. There are no 'pages' in a Word document. The displayed pages are achieved by text flow and manipulation those pages will alter the text flow.
You have started by saving the document then opened it (it was already open). Then you have processed the document, before saving it again, thus overwriting the original. You might as well just save at the end - unless you saveas with a different name.
You have set the range to a location, then set it again to another location, when what you need to do is set the range to a location then move the start and/or end of the range to another location as appropriate.
The following should be closer:
Code:
Option Explicit
Public Sub Test()
Dim x As Document
Set x = ActiveDocument
' imagine I want to everything before Page 3 and after Page 5
DeleteBefore x, 3
DeleteAfter x, 2
x.SaveAs "e:\temp\test.docm" ' please don't mind this, it is just here for testing
End Sub
Public Sub DeleteBefore(ByRef doc As Document, ByVal page_num As Long)
Dim Rng As Range
If page_num <= 1 Then _
Exit Sub
Set Rng = doc.Range 'set a range to the document body
Rng.Collapse 1 'collapse the range to the start of doc
Selection.GoTo wdGoToPage, , , page_num 'find the required page
Rng.End = doc.Bookmarks("\page").Range.Start 'set the start of the range to the start of that page
'Rng.Select 'for testing with only one of the processes
Rng.Delete 'delete the range
End Sub
Public Sub DeleteAfter(ByRef doc As Document, ByVal page_num As Long)
Dim Rng As Range
Dim max_page As Long
max_page = doc.Content.ComputeStatistics(wdStatisticPages)
If page_num >= max_page Then _
Exit Sub
Set Rng = doc.Range
Rng.Collapse 1 'the start of doc
Selection.GoTo wdGoToPage, , , page_num + 1
Rng.Start = doc.Bookmarks("\page").Range.Start
Rng.End = doc.Range.End
'Rng.Select
Rng.Delete
End Sub