![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Набор закладок в вордовском документе
ИМХО © (2004-10-06 22:09:00)Здравствуйте.
Ситуация такова: имеется вордовский документ, с которым я работаю через OLE-автоматизацию.
Задача: получить список закладок, но не по имени, а по положению.
Дело в том, что если делать так:
WD := CreateOleObject('Word.Application');
WD.Visible := False;
WD.Documents.Open('документ.doc');
BookM_Count := WD.ActiveDocument.Bookmarks.Count;
for I := 1 to BookM_Count do
ListBox.Items.Add(WD.ActiveDocument.Bookmarks.Item(I).Name);
то получаем список по имени.
Как получить список закладок по положению в документе???
Babay (2004-10-19 08:18:00) [1]Сходи сюда может поможет
http://delphiworld.narod.ru/base/get_rtf_from_msword.html
http://delphiworld.narod.ru/base/ins_rtf_to_msword.html
статейка называтся
Взять RTF-текст из запущенного MS Word без использования буфера обмена
ИМХО (2004-10-13 21:11:00) [2]а вообще есть хороший форум по автоматизации офисных продуктов?
по идее, это уже выходит за рамки Delphi...
YurikGL (2004-10-13 19:26:00) [3]
> ИМХО © (13.10.04 17:27) [40]
1) Послать команду "пшел курсор в конец документа" и считать его позицию
2) Выбрать весь документ и считать end у selection
3) Возможно WordApplication1.ActiveDocument.Characters.Count;
....
Фантазируй. :-)
ИМХО (2004-10-13 17:27:00) [4]понятно.
а как таки узнать позицию последнего символа в документе?
YurikGL (2004-10-13 14:18:00) [5]
> ИМХО © (13.10.04 09:15) [37]
Это как сам решишь :-)
Через раннее связывание, обычно, больше мудохаешься, но работает в итоге быстрее, а через позднее - наоборот.
А еще, это - сила привычки.
ИМХО (2004-10-13 14:15:00) [6]ась?
ИМХО (2004-10-13 09:15:00) [7]
> YurikGL © (12.10.04 15:23) [35]
>
> > почему некоторые (например, YurikGL) так любят ранне связывание?
>
> Да вроде работает быстрее, хотя и глючнее.
а что лучше: быстрее, но глючнее, или медленнее, но надежнее?
ИМХО (2004-10-12 17:06:00) [8]Господа!
Последняя заморочка осталась.
Таблы с сохранением последней закладки.
Как узнать позицию последнего символа в документе?
(иначе опять - "Выделенного текста нет")
YurikGL (2004-10-12 15:23:00) [9]
> почему некоторые (например, YurikGL) так любят ранне связывание?
Да вроде работает быстрее, хотя и глючнее. А по поводу привязки, использую 2000-е компоненты, проблем не встречал ни разу.
ИМХО (2004-10-12 14:59:00) [10]кстати, давно хотел узнать, почему некоторые (например, YurikGL) так любят ранне связывание?
по идее, скомпилированный модуль привязан к той версии офисной библиотеки, которая установлена у разработчика, а у юзверя она может не пойти, так?
ИМХО (2004-10-12 14:52:00) [11]TStrings и MS Word... несерьезно это как-то...
вордовский формат - это бинарный формат, его в TStrings не запихнешь.
другое дело, если бы RTF...
он текстовый, но описывает форматирование и прочие заморочки
YurikGL (2004-10-12 14:40:00) [12]
> ИМХО © (12.10.04 10:02) [27]
> спасибо, но мне кажется, это бред
>
> пусть YurikGL выскажется
Не проверял, но ИМХО работать будет. Однако же проблемы это не решает.
Babay (2004-10-12 12:42:00) [13]З.Ы. вот еще подумалось а может открыть документ убрать все НЕНУЖНОЕ и сохранить как.... Хотя тоже не очень красиво и кривовато :-(
Babay (2004-10-12 12:30:00) [14]ну тогда по моему только через буфер....
Лично я невидел функции создать документ из выделенного или сохранить только выделенное, хотя печать выделенного фрагмента есть....
ИМХО (2004-10-12 11:13:00) [15]нет, фишка в том, что форматирование ОЧЕНЬ НУЖНО. Ворд хорош форматированием (и не только им)
Babay (2004-10-12 11:03:00) [16]Тебе кажется или проверил? Это достаточно надежный источник.
Здесь предлагается взять выделенный текст и засунуть в TStrings, далее можно сохранить в файл. Правда форматирование и прочие штучки вордовские потеряются.... Но если это не пренципиально и нужен только текст, то по моему решение нормальное.
З.Ы. Сам бы проверил да некогда, а вот тебе как раз на это время убить можно. Не надо голословно заявлять что это бред.
ИМХО (2004-10-12 10:02:00) [17]спасибо, но мне кажется, это бред
пусть YurikGL выскажется
Babay (2004-10-12 09:52:00) [18]Вот тока что нарвался, сам не проверял может тебе кое что из этого пойдет или натолкнет на мысль . Пересылаю как есть
Импорт активного документа Word
--------------------------------------------------------------------------------
Автор: Dimka Maslov
WEB-сайт: http://delphibase.endimus.com
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Импорт активного документа Word
Импортирует текст активного документа Word в объект класса TStrings
(без форматирования). Если при открытом Worde результат отрицательный -
рекомендуется перезапустить приложение, поскольку дальнейшие вызовы
функции в подавляющем большинстве случаев будут приводить к ошибке
Зависимости: OleServer, Word97
Автор: Dimka Maslov, mainbox@endimus.com, ICQ:148442121, Санкт-Петербург
Copyright: Dimka Maslov
Дата: 6 февраля 2004 г.
***************************************************** }
function ImportWordActiveDocument(Strings: TStrings): Boolean;
var
Word: TWordApplication;
Start, End_: Integer;
begin
Result := True;
try
Word := TWordApplication.Create(nil);
try
Word.AutoConnect := False;
Word.AutoQuit := False;
Word.ConnectKind := ckRunningInstance;
Word.Connect;
Start := Word.Selection.Get_Start;
End_ := Word.Selection.Get_End_;
Word.Selection.SetRange(0, $7FFFFFFF);
Strings.Text := Word.Selection.Text;
Word.Selection.SetRange(Start, End_);
Word.Disconnect;
finally
Word.Free;
end;
except
Result := False;
end;
end;
// Пример использования:
if not ImportWordActiveDocument(Memo1.Lines) then
ShowMessage('Error');
Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay
ИМХО (2004-10-12 09:41:00) [19]да, он уже готовый, с закладками
нужно вырвать некоторые куски и сохранить их на диск
Babay (2004-10-12 05:57:00) [20]А как формируется документ, ежели не секрет? Сам формируешь или он уже готовый в каком то виде? Может опишешь немного задачу и найдется другое (красивое) решение?