Изменение формата сразу всех страниц в документе

Автор register281009, 19 июня 2012, 11:23

0 Пользователи и 1 гость просматривают эту тему.

register281009

Имеется текст, нужно поменять размер страниц.

При изменении Формат - Страница меняется только часть страниц документа. При изменении с использованием стилей также изменяется формат только части страниц. Выделение всего Cntrl+A ничего не меняет.

Менять каждый десяток страниц по отдельности в таком большом текстовом файле утомительно. Нельзя ли каким-то образом поменять формат страницы для всего документа?

Helen

обычно, если файл редактировался изначально в ООо/ЛО, достаточно изменить стиль Страницы "Обычный", поскольку он по умолчанию присваивается всем страницам документа.

если же документ был ранее создан в MSO, задача усложнится, поскольку каждая страница имеет собственный стиль. В этой ситуации лучше всего удалить пользовательские стили. Это быстрее, чем мучиться с каждым. При удалении стиля странице присваивается стиль "Обычный".

JohnSUN

+1
Для быстрого массового удаления стилей из документа можно использовать несложный макрос. Что-то в таком роде:
Sub removePageStyles()
Dim oStyleFamilies As Variant
Dim oStyleFamilie As Variant
Dim aElementNames As Variant
Dim i%, count%
Const prefixStyleName = "Convert"
    oStyleFamilies = ThisComponent.getStyleFamilies()
    oStyleFamilie = oStyleFamilies.getByName("PageStyles")
    aElementNames = oStyleFamilie.getElementNames()
    count = 0
    For i = LBound(aElementNames) To UBound(aElementNames)
        If Left(aElementNames(i), Len(prefixStyleName)) = prefixStyleName Then
            oStyleFamilie.removeByName(aElementNames(i))
            count = count + 1
        EndIf
    Next i
    MsgBox ("Удалено " + count + " стилей, названия которых начинались с '" + prefixStyleName + "...'", 64, "Успешное завершение")
End Sub
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

register281009

Спасибо, метод в целом работает.

Вручную удалять стили было бы тоже трудно, их там было огромное количество, причем сразу все удалить нельзя было, только по одному, насколько я понял.

В макроссе поменял, разве что,
Const prefixStyleName = ""
вместо
Const prefixStyleName = "Convert"
и он все пользовательское удалил.

После этого редактирование "Обычного" стиля помогает.

P.S. Однако все же проще сделать это в Word, а потом уже забирать в Writer измененное... Жаль нету кнопочки типа "Применить ко всему документу" или возможности изменять все выделенные страницы, как, насколько я понял, можно делать в Calc.

JohnSUN

Цитата: register281009 от 19 июня 2012, 15:38
В макроссе поменял, разве что,
Const prefixStyleName = ""
вместо
Const prefixStyleName = "Convert"
и он все пользовательское удалил.
Красиво  ;D
Проще, наверное, было закомментировать строчку с
If Left(aElementNames(i), Len(prefixStyleName)) = prefixStyleName Thenи с соответствующим EndIf
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне