|
|
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
Имеются документы Word, объёмом до сотен страниц. Они представляют собой перечень двусторонних бланков (полученных в результате слияния), и содержат поочередно: нечетные страницы - лицевая сторона, чётные - оборотная сторона каждого бланка. Помогите, пожалуйста, составить макрос, который сможет автоматизировать работу по разделению таких больших документов на отдельные листы. Т.е., например, из 100-страничного документа нужно получить 50 бланков, имеющих то же имя с добавкой выделенных №№ страниц. (В идеале, в качестве добавки лучше бы использовать значения в одной из ячеек таблицы бланка - это тоже можно реализовать на VBA?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2006, 20:09:58 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
Selection.GoToNext wdGoToPage ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2006, 20:56:39 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
Поиском нашлась похожая тема - http://www.sql.ru/forum/actualthread.aspx?tid=144932 , но... :( Разделение происходит для каждой страницы, а не для листа Но самое главное - в новые документы переностся только текст, а всё форматирование и таблицы пропадают! Помогите, пожалуйста, поправить код этого макроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2006, 22:03:16 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 07:05:31 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
вопрос всё ещё актуален.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 15:58:14 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
Попробуйте так (основано на том, что слияние типа "Письмо" вставляет разрыв раздела после каждой записи): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 18:35:03 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
Спасибо, но к сожалению, предложенное решение разделяет существующий документ слияния по каждой странице, а не по парам (листам) Поэтому автоматизация вопроса по-прежнему важна, пока же приходится делать всё ручками..;( Вдобавок вопрос - каким образом в VBA WORD можно находить уже существующий на каждом листе номер (который является одним из полей слияния), чтобы использовать его в качестве фрагмента имени сохраняемого бланка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2006, 23:13:05 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
RosaliaСпасибо, но к сожалению, предложенное решение разделяет существующий документ слияния по каждой странице, а не по парам (листам) Хм... похоже, у Вас основной док-т состоит из нескольких разделов. Поправить можно так (если разделов два; если больше, соответственно): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Не проверяется, что нужное кол-во разделов существует, но, если работаем с результатом слияния, сойдет. Rosalia Вдобавок вопрос - каким образом в VBA WORD можно находить уже существующий на каждом листе номер (который является одним из полей слияния), чтобы использовать его в качестве фрагмента имени сохраняемого бланка? Найти что-то в документе можно, предварительно пометив начало и конец нужного места скрытым текстом. Например так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Опять же на скорую руку, не проверяя результатов поиска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 19:36:34 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
Спасибо, вот теперь документ действительно разделяется по листам! :) Но.. К сожалению, остается проблема с появлением ненужной пустой страницы в конце разделенных листов. Т.е. похоже, что фрагмент кода Код: plaintext 1. не выполняется, и не происходит замены типа разрыва ;( На всякий случай опишу структуру нашего шаблона слияния. В конце первой страницы вставлен разрыв раздела (со следующей страницы) ::::::: Section Break (Next Page) :::::::: При слиянии, на каждой второй странице документа такой же тип разрыва появляется автоматически, что и приводит к образованию пустой страницы у разделённых бланков. Поиском нашлась статья БЗ MS "How to Programmatically Save Each Page or Section of Document As Separate File" , с примерами решения подобной задачи Код: plaintext 1. 2. 3. 4. 5. но, к сожалению, это опять срабатывает только для одностраничных документов... (Вообще, похоже, что работа в VBA Word с разделами является нетривиальной задачей - "Deleting Word Document Sections" ) Как же изменить макрос до совершенства? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2006, 18:09:12 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
Rosalia Т.е. похоже, что фрагмент кода Код: plaintext 1. не выполняется, и не происходит замены типа разрыва ;( Эт врядли... ©. Скроее всего дело вот в чем: разрыв раздела (даже wdSectionContinuous) порождает лишнюю строку -- она и вылезает на след. страницу. Т.е., можно попробовать просто уменьшить нижнее поле (ну или как-нибудь ужать). Если уменьшать некуда, можно попробовать не копировать разрыв раздела вообще (вычесть 1 из конечной позиции копируемого диапазона; соответственно, совсем убрать "неработающую" строку) со всеми вытекающими: параметры страницы второго раздела не скопируются. Обойти это можно, например, задав при создании нового док-та шаблон (Template:=...) с нужными параметрами страницы. Его можно получить из исходного документа. Так что, нет в мире совершенства . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2006, 19:18:51 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
Goldminer Скроее всего дело вот в чем: разрыв раздела (даже wdSectionContinuous) порождает лишнюю строку -- она и вылезает на след. страницу. Да нет, в конце второго листа достаточно места - после разрыва ещё шесть абзацев помещаются, не переходя на новою страницу... Как я понимаю, строка Код: plaintext Однако этого почему-то не происходит, тип разрыва остается как и был - со следующей страницы Есть еще одна идея - выделять всё с заранее помеченного места до конца документа и удалять это выделенное (с расчетом, что при этом будет удален и непослушный разрыв) (По поводу совета о пометке текста отдельное спасибо), а как тогда реализовать выделение до самого конца документа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2006, 22:26:13 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
Rosalia Однако этого почему-то не происходит, тип разрыва остается как и был - со следующей страницы Бред какой-то. Может кинете файлик (не тот, где сотни страниц, конечно, а окончательный кусочек) на мыло (goldminer на рамблер ру). Версия офиса какая у Вас? Rosalia Есть еще одна идея - выделять всё с заранее помеченного места до конца документа и удалять это выделенное (с расчетом, что при этом будет удален и непослушный разрыв) Удалить разрыв не проблема, а еще проще его вообще не копировать. Нужен он единственно затем, что к нему привязаны параметры Вашей второй страницы (Вы же сами кучу ссылок привели на эту тему). Можно и без него (дочитайте до конца мой пред. пост), но с ним гораздо изящнее получается. Я, кстати, этот прием и вручную использовал, когда надо было слепить из неск. док-тов один и быть уверенным, что страницы не поползут. Rosalia а как тогда реализовать выделение до самого конца документа? Проще всего отвечать на такие вопросы сделав ручками и записав макрос. Другое дело, что на самом деле ничего выделять не нужно (если не предполагается взаимодействие с пользователем) -- нужно просто вычислять требуемые диапазоны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2006, 13:39:28 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
2 Rosalia: Да уж, чудеса. Есть некая странность в присланном файле, идентифицировать которую мне не удалось. Чуть позже изложу свое видение того, что происходит, Вам же посоветую поступить по "плану Б" (см. выше), а именно: 1. Берете присланный файл, удаляете содержимое, сохраняете как шаблон (напр. "sample.dot"). 2. Меняете код так: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 16:46:40 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
Спасибо, с шаблоном получается! :) Однако интересно решение и без шаблона. Просто таких форм в дальнейшем будет несколько, а работают с ними не очень опытные пользовательницы. Хотелось бы поместь им макрос в Normal.dot и привязать к кнопочке, чтобы легко и просто можно было работать с любым возможным вариантом документа слияния. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 23:26:27 |
|
||
|
Word - как разделить документ по листам?
|
|||
|---|---|---|---|
|
#18+
Rosalia Однако интересно решение и без шаблона. Просто таких форм в дальнейшем будет несколько, .... Повторюсь: проблема именно в некой особенности Вашего док-та. Какой, а пока не знаю (может Вы?). Сам прием (в первоначальном варианте) опробован неоднократно и никаких шаблонов не требует. Попробуйте пересоздать осн. док-т слияния. Копировать можно все, кроме разрывов разделов. 2 All: Test case: есть два док-та MSWord. Doc1 -- получен из образца, который прислала Rosalia, удалением всего содержимого (для чистоты эксперимента). Doc2 -- новый док-т, на основе умолчального Normal.dot (Office 2003 SP2). Вставим в любой из них разрыв раздела типа continuous (на текущей странице), выделим его и скопируем в другой док-т. Наблюдаем странный результат: вставлен разрыв "со след. страницы", причем его тип невозможно изменить (!) ни вручную, ни программно, причем никакой ругани, просто тип остается прежним. Между копиями "странного" док-та все копируется без проблем. Напрашивается вывод: (единственный) раздел "странного" док-та обладает неким свойством Х, которое Word считает несовместимым на одной странице с "нормальным" разделом. На первый (и на второй) взгляд ничего необычного в свойствах этого раздела нет. Собственно вопрос: может кто знает (или обнаружит) что это за свойство? Вопрос теоретический, обходных путей я уже и сам напредлагал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 12:08:09 |
|
||
|
|

start [/forum/topic.php?fid=61&gotonew=1&tid=2184181]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
61ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 384ms |

| 0 / 0 |
