Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разрыв страницы в Word, Разбить один документ на множество 
:(
    Опции темы
Chpok
  Дата 10.11.2006, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 17.10.2006
Где: Томск, ул. Геолог ов

Репутация: нет
Всего: нет



Привет!

Такая проблема, помогите;))

Открываю делфёй вордовский документ: каждую страницу надо записать в отдельный вордовский документ. Когда я говорю, каждую страницу, я имею в виду текст до разрыва страницы, он может быть и на пять страниц, и на 5 строчек.
Как это сделать?
В принципе проблема у меня: 
   1. как найти разрыв страницы;
   2. как "взять" весь текст между разрывами (подозреваю, что можно через characters);

Кто-нибудь, подскажите что-нибудь smile 
PM MAIL ICQ   Вверх
Matematik
Дата 10.11.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: нет
Всего: 50



1. Делай поиск спец символа "разрыв страницы" - "^m"
2. Выделяешь все от разрыва страницы до начала документа, вырезаешь, вставляешь в новый документ
3. goto 1


PM MAIL WWW ICQ   Вверх
Chpok
Дата 11.11.2006, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 17.10.2006
Где: Томск, ул. Геолог ов

Репутация: нет
Всего: нет



спасибо, попробую.

Кстати, заодно спрошу: откуда вы все берёте эти спецсимволы? Где-то есть такой док?
PM MAIL ICQ   Вверх
Albinos_x
Дата 11.11.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



в большинстве случаев методом экпериментов... по крайней мере я... документации на Ворд я не нашёл...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Chpok
Дата 11.11.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 17.10.2006
Где: Томск, ул. Геолог ов

Репутация: нет
Всего: нет



А как мне это всё выделить, я что-то не могу сообразить??

Вот так вот я наверное найду разрыв страницы:
Код

    tString:='^m'; // спецсимвол: разрыв страницы
    p1:=wdFindStop; // найти один раз
    p2:=wdReplaceNone;
    wd.Content.Find.Execute(tString,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,p1,EmptyParam,EmptyParam,p2,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
    wd.Content.Select;

...и после этого курсор стоит перед разрывом, да?
Как мне теперь выделить?? smile 
PM MAIL ICQ   Вверх
Albinos_x
Дата 11.11.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Цитата(Chpok @  11.11.2006,  13:49 Найти цитируемый пост)
'^m'

это условный знак форматирования и так ты его не найдёшь...т.к. Word хранит его как символ #12, вот его-то тебе и нужно искать... это раз... а во вторых
Цитата(Chpok @  11.11.2006,  13:49 Найти цитируемый пост)
wd.Content.Select;

это выделит весь текст, а не искомый...

в третьих, если эта страница вставлена, не через команду -> вставка  -> разрыв  -> новую страницу, то этого символа в тексте не найдёшь...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Matematik
Дата 11.11.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: нет
Всего: 50



Берутся легко.
Делаешь соответствующий макрос и его код переносишь в Delphi (естественно с синтаксисом)
Код

 ' найти
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "^m"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
' выделить
    Selection.HomeKey Unit:=wdStory, Extend:=wdExtend
' вырезать
    Selection.Cut


Это сообщение отредактировал(а) Matematik - 11.11.2006, 17:44
PM MAIL WWW ICQ   Вверх
Albinos_x
Дата 11.11.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Цитата(Matematik @  11.11.2006,  17:42 Найти цитируемый пост)
Берутся легко.

упс... у меня не находило... но оказалось, что это был глюк самого ворда... как я этот глюк убрал... всё стало находить без проблем...
Код
...
Templ:='^m';
D:=wdFindStop ;
WordApplication1.Selection.Find.Execute(Templ,EmptyParam,EmptyParam,EmptyParam,
                                        EmptyParam,EmptyParam,EmptyParam,D,EmptyParam,
                                        EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
...

находит и выделяет...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Chpok
Дата 15.11.2006, 06:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 17.10.2006
Где: Томск, ул. Геолог ов

Репутация: нет
Всего: нет



Ага, начинаю понимать...

Написал следующее:
Код

    p1:='^m';
    p2:=wdFindStop;
    wa.Selection.Find.Execute(p1,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,p2,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

    p1:=wdStory;
    p1:=wdExtend;
    wa.Selection.HomeKey(p1,p2);

    wa.Selection.Cut;

...только HomeKey ругается, говорит: "Неверный параметр"!!
Почему? smile 

И, вот ещё какой вопрос, у меня 
Код
wa
 - это TWordApplication, в нём открыто два документа, объект Selection - это курсор в том документе, который на данный момент является активным, так? smile 

PM MAIL ICQ   Вверх
Matematik
Дата 15.11.2006, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: нет
Всего: 50



Цитата(Chpok @  15.11.2006,  06:55 Найти цитируемый пост)
HomeKey ругается, говорит: "Неверный параметр"!!

Опечатка
p2:=wdExtend;


Цитата(Chpok @  15.11.2006,  06:55 Найти цитируемый пост)
это TWordApplication, в нём открыто два документа, объект Selection - это курсор в том документе, который на данный момент является активным, так?

Точно не знаю, но я всегда активизурую нужный мне документ (doc.Activate) потом Selection указывает на него.
PM MAIL WWW ICQ   Вверх
Chpok
Дата 15.11.2006, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 17.10.2006
Где: Томск, ул. Геолог ов

Репутация: нет
Всего: нет



Цитата

Опечатка
p2:=wdExtend;


Ой-ой-ой smile 
Прошу прощения за оплошность...
PM MAIL ICQ   Вверх
Albinos_x
Дата 15.11.2006, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Цитата(Chpok @  15.11.2006,  06:55 Найти цитируемый пост)
объект Selection - это курсор в том документе, который на данный момент является активным, так?  

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


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.