[vba]Код
Sub ReOrder_Pages(doc As Visio.Document)
Dim iPage As Visio.Page
Dim Arr$(), jArr$, iArr$, i%, j%
ReDim Arr(1 To doc.Pages.Count)
For i = 1 To doc.Pages.Count ' заполнить массив имён листов
Arr(i) = doc.Pages(i).Name
Next i
For j = LBound(Arr) To UBound(Arr) ' сортировать массив
For i = UBound(Arr) To LBound(Arr) + 1 Step -1
jArr = Arr(i - 1): iArr = Arr(i)
If iArr < jArr Then Arr(i) = jArr: Arr(i - 1) = iArr
Next i
Next j
For i = 1 To doc.Pages.Count ' изменить индексы имён листов по массиву
doc.Pages(Arr(i)).Index = i
Next i
End Sub
[/vba]