Из документов word на лазерном принтере в режиме односторонней печати распечатываются извещения для абонентов. Всего около 500 документов, в каждом документе примерно по 100 страниц. В конце каждого извещения вставлен разрыв страницы, и следующее извещение всегда начинается с новой страницы.
В идеале одно извещение входит на одну страницу, но есть отдельные извещения, которые на одной странице не помещаются, занимают часть следующей страницы, и соответственно распечатываются на двух листах бумаги.
Документы распечатываются просто из Windows: выделяются мышкой по 30-50 штук - контекстное меню - печать.
Стоит задача либо: 1. Те извещения, которые не входят на одну страницу, распечатывать в режиме автоматической двухсторонней печати. То есть, например, первые десять извещений входят на одну страницу, и печатаются в режиме односторонней печати. Одиннадцатое извещение занимает две страницы и должно печататься с двух сторон листа бумаги. Двенадцатое извещение опять входит на страницу, и т.д.
2. Можно пожертвовать второй страницей "длинных" извещений (важная информация находится в начале, а то, что переносится на вторую страницу - можно выкинуть).
Подскажите пожалуйста, каким образом это можно сделать? Мои соображения для второго варианта: с помощью VBA найти все страницы, на которых есть начало извещений, и отправить эти страницы выборочно на печать. Можно еще найти все страницы, на который нет начала извещений и удалить их из документа, но проблема в том, что у документа сложная структура с вложенными таблицами, и удаление происходит не всегда корректно.
Для первого варианта: может быть есть способ печатать каждый раздел документа в режиме двухсторонней печати? Тогда, по идее, все разделы, которые входят на одну страницу будут печататься с одной стороны, а те, которые не входят - с двух.
Буду благодарен за подсказку, как еще можно решить эту задачу.
Добрый день, уважаемые форумчане.
Из документов word на лазерном принтере в режиме односторонней печати распечатываются извещения для абонентов. Всего около 500 документов, в каждом документе примерно по 100 страниц. В конце каждого извещения вставлен разрыв страницы, и следующее извещение всегда начинается с новой страницы.
В идеале одно извещение входит на одну страницу, но есть отдельные извещения, которые на одной странице не помещаются, занимают часть следующей страницы, и соответственно распечатываются на двух листах бумаги.
Документы распечатываются просто из Windows: выделяются мышкой по 30-50 штук - контекстное меню - печать.
Стоит задача либо: 1. Те извещения, которые не входят на одну страницу, распечатывать в режиме автоматической двухсторонней печати. То есть, например, первые десять извещений входят на одну страницу, и печатаются в режиме односторонней печати. Одиннадцатое извещение занимает две страницы и должно печататься с двух сторон листа бумаги. Двенадцатое извещение опять входит на страницу, и т.д.
2. Можно пожертвовать второй страницей "длинных" извещений (важная информация находится в начале, а то, что переносится на вторую страницу - можно выкинуть).
Подскажите пожалуйста, каким образом это можно сделать? Мои соображения для второго варианта: с помощью VBA найти все страницы, на которых есть начало извещений, и отправить эти страницы выборочно на печать. Можно еще найти все страницы, на который нет начала извещений и удалить их из документа, но проблема в том, что у документа сложная структура с вложенными таблицами, и удаление происходит не всегда корректно.
Для первого варианта: может быть есть способ печатать каждый раздел документа в режиме двухсторонней печати? Тогда, по идее, все разделы, которые входят на одну страницу будут печататься с одной стороны, а те, которые не входят - с двух.
Буду благодарен за подсказку, как еще можно решить эту задачу.Arden
Для двухсторонней печати вижу только один выход: разбросать извещалки на два файла ворд: в первом те что на одном листе(и можно сразу на печать вывести), в дрогой все для двухстронней печати. А далее уже пользователь просто запустит на печать с настройкам двухсторонней печати.
Arden, День добрый, а если рассмотреть вариант такого плана:
Пробегаем по документу (или Selection), находим начало извещений, определяем номер страницы [vba]
Код
Selection.Information(wdActiveEndPageNumber) 'определяет номер страницы где стоит курсор ввода
[/vba]
Все номера страниц записываем в строковую переменную в виде "1-5,7-15,17,19" и данный набор номеров страниц отправляем на печать [vba]
Для двухсторонней печати вижу только один выход: разбросать извещалки на два файла ворд: в первом те что на одном листе(и можно сразу на печать вывести), в дрогой все для двухстронней печати. А далее уже пользователь просто запустит на печать с настройкам двухсторонней печати.devilkurs
Сообщение отредактировал devilkurs - Четверг, 16.02.2017, 13:52
Для двухсторонней печати вижу только один выход: разбросать извещалки на два файла ворд: в первом те что на одном листе(и можно сразу на печать вывести), в дрогой все для двухстронней печати. А далее уже пользователь просто запустит на печать с настройкам двухсторонней печати.
Хорошо, но из готового документа word, как я писал вначале, не всегда корректно удаляются отдельные листы (в документе много вложенных таблиц), то есть удалить "лишние" листы пока не представляется возможным. Разделять документ на этапе его формирования невозможно по другим техническим причинам, на которые не удастся повлиять.
Для двухсторонней печати вижу только один выход: разбросать извещалки на два файла ворд: в первом те что на одном листе(и можно сразу на печать вывести), в дрогой все для двухстронней печати. А далее уже пользователь просто запустит на печать с настройкам двухсторонней печати.
Хорошо, но из готового документа word, как я писал вначале, не всегда корректно удаляются отдельные листы (в документе много вложенных таблиц), то есть удалить "лишние" листы пока не представляется возможным. Разделять документ на этапе его формирования невозможно по другим техническим причинам, на которые не удастся повлиять.Arden
Arden, попробуйте следующую конструкцию: 1) перебираем документ и в две строковые переменные вписываем номера страниц: в первую для печати на одном листе, во вторую для двухсторонней печати. 2) выпускаем на печать извещалки, помещающиеся на один лист методом который я писал выше. (т.е. номера листов из первой переменной) 3) из второй переменной берем номера страниц для вывода диалогового окна печати с включением дуплекса этим макросом: [vba]
[/vba] Пользователь подтверждает печать извещалок через дуплекс.
Arden, попробуйте следующую конструкцию: 1) перебираем документ и в две строковые переменные вписываем номера страниц: в первую для печати на одном листе, во вторую для двухсторонней печати. 2) выпускаем на печать извещалки, помещающиеся на один лист методом который я писал выше. (т.е. номера листов из первой переменной) 3) из второй переменной берем номера страниц для вывода диалогового окна печати с включением дуплекса этим макросом: [vba]