1

Тема: Общее число страниц в документе при разном формате листов.

Sub PSize()

Dim objPages As Pages
Dim A3 As Integer
Dim A4 As Integer

A3 = 0
A4 = 0

Set objPage = ActiveDocument.ActiveWindow.Panes(1).Pages

'For I = 1 To objPage.Count
    Select Case Selection.PageSetup.PaperSize
    Case 6
        A3 = A3 + 1
    Case 7
        A4 = A4 + 1
    End Select
'Next
Debug.Print "Общее число сраниц А4 = " & A4 + A3 * 2

End Sub

Каким образом переписаь этот код чтобы получить общее число страниц из всего документа, а не только для выделенного листа?

2

Re: Общее число страниц в документе при разном формате листов.

    Dim Количество_страниц_в_документе As Integer
    Количество_страниц_в_документе = ActiveDocument.ComputeStatistics(wdStatisticPages)

3

Re: Общее число страниц в документе при разном формате листов.

Это вернет общее кол-во листов. А как узнать сколько из этого кол-ва листов формата А3 и А4 ну или другого формата?

4

Re: Общее число страниц в документе при разном формате листов.

Вариант один из:

Sub PSize()

Dim A3 As Integer
Dim A4 As Integer
Dim i As Long
Dim R As Range

    A3 = 0
    A4 = 0
    Set R = ActiveDocument.Range
    For i = 1 To R.Information(wdActiveEndPageNumber)
        Set R = ActiveDocument.GoTo(What:=wdGoToPage, _
                                    Which:=wdGoToAbsolute, _
                                    Count:=i)
        Select Case R.PageSetup.PaperSize
            Case wdPaperA3
                A3 = A3 + 1
            Case wdPaperA4
                A4 = A4 + 1
        End Select
    Next
    Debug.Print "Общее число сраниц А4 = " & A4 + A3 * 2

End Sub
Макросы под заказ и готовый пакет - mtdmacro.ru

5

Re: Общее число страниц в документе при разном формате листов.

В папке находится много файлов, каждый файл содержит по 500 страниц.
если открывать эти файлы по очереди в макросе и использовать код ВОЖДЯ. То Sub PSize() возвращает неправильное число страниц, т.к. открытый документ не успевает до конца подгрузиться.
Каким образом устранить этот недостаток?  (сейчас лечится просто повторный запуск макроса).
Спасибо.

6

Re: Общее число страниц в документе при разном формате листов.

Перед макросом PSize, надо выполнить принудительную разбивку на страницы.

Options.Pagination = False 'фоновая разбивка на страницы
ActiveDocument.Repaginate  ' переразбить на страницы документ Ворда

Тут обсуждалось: http://wordexpert.ru/forum/viewtopic.php?id=406

Макросы под заказ и готовый пакет - mtdmacro.ru