Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

OLE-автоматизация Ворда и закладки [D5]


ИМХО ©   (2004-06-21 18:04:00) 

Кто имеет опыт автоматизации Ворда?
Задача такая: нужно из вордовского файла вырвать кусок, связанный с определенной закладкой. Открыл файл, нашел названия всех закладок, но как взять этот кусок между закладкой A и закладкой B?


YurikGL   (2004-06-21 22:49:00) [1]


> ИМХО ©   (21.06.04 22:46) [15]

Пробовал я пользовать > Visual Basic Reference. В основном неудачно. Две трети полезный функций нашел через макросы, треть через [13].
Это, конечно, не считая всяких example-в


ИМХО   (2004-06-21 22:47:00) [2]

Написал.


ИМХО   (2004-06-21 22:46:00) [3]

Но насколько мне известно, Борланд импортировал далеко не все функции и процедуры от Мелкософта. Я еще смотрю Microsoft Word Visual Basic Reference.


YurikGL   (2004-06-21 22:41:00) [4]


>  ИМХО

Пользуясь случаем, ИМХО, напиши мне свой e-mail на YurikGL(собака)newmail.ru

Просьба модераторам, пожалуйста, не удаляйте сообщение, пока ИМХО что-нибудь не ответить.


YurikGL   (2004-06-21 22:37:00) [5]


> ИМХО

Эксклюзивно для тебя, если пользовать TWordapplication, то по ctrl+пробел он показывает массу интересных функций и пропертив, включая их тип. Пошарься сам, - много найдешь.


ИМХО   (2004-06-21 22:33:00) [6]

Спасибо, сейчас попробую.


YurikGL   (2004-06-21 22:06:00) [7]

Если нужен только текст, то Selection.Text:widestring попробуй.

Memo1.Text:=app.selection.text; прокатило.


YurikGL   (2004-06-21 22:01:00) [8]

Хотя можешь попытаться скопировать selection в переменную. Сам selection - 4-х байтный указатель.


YurikGL   (2004-06-21 21:55:00) [9]

Теперь выбранному куску тексту сооветствует объект selection.
Можно через буфер в другой документ selection.copy и selection.paste.


ИМХО   (2004-06-21 20:58:00) [10]

А как можно выбранный кусок отдельно сохранить?

Спасибо.


YurikGL   (2004-06-21 19:56:00) [11]

[3] и [6] найди два отличия :)


YurikGL   (2004-06-21 19:51:00) [12]

app := CreateOleObject('Word.Application');
App.Visible := True;
...
грузим нужный файл
...
vr4:='з1';
vr1:=wdGoToBookmark;
r1:=app.Selection.GoTo(vr1,EmptyParam,EmptyParam,vr4).Start;
vr4:='з2';
r2:=app.Selection.GoTo(vr1,EmptyParam,EmptyParam,vr4).Start;
app.ActiveDocument.Range(r1,r2).select;

Кстати, через wordapplication быстрее работает, хотя и глючнее.


ИМХО   (2004-06-21 19:27:00) [13]

Я этим компонентом вообще не пользуюсь... Можно как-то через CreateOleObject?


YurikGL   (2004-06-21 19:07:00) [14]

ИМХО, получилось?


YurikGL   (2004-06-21 18:40:00) [15]

Уже сделал выбирает текст между закладкой z1 и z2

procedure TForm1.Button2Click(Sender: TObject);
var
vr1,vr4,r1,r2:olevariant;

begin
vr1:=wdGoToBookmark;
WordApplication1.Connect;
vr4:='z1';
r1:=WordApplication1.Selection.GoTo_(vr1,EmptyParam,EmptyParam,vr4).Start;
vr4:='z2';
r2:=WordApplication1.Selection.GoTo_(vr1,EmptyParam,EmptyParam,vr4).Start;

WordApplication1.ActiveDocument.Range(r1,r2).select;
WordApplication1.Disconnect;

end;


ИМХО   (2004-06-21 18:36:00) [16]

Вот:

 try
   WD := GetActiveOleObject('Word.Application');
 except
   WD := CreateOleObject('Word.Application');
 end;
 WD.Visible := False;
 WD.Documents.Open(File_Name);
 BookM_Count := WD.ActiveDocument.Bookmarks.Count;
 if BookM_Count > 0 then
   for I := 1 to BookM_Count do
     BookmarksListBox.Items.Add(WD.ActiveDocument.Bookmarks.Item(I).Name);

 if BookM_Count > 0 then
   for I := 1 to BookM_Count do begin
     Pos := WD.ActiveDocument.Bookmarks.Item(I).Start;
     Pos2 := WD.ActiveDocument.Bookmarks.Item(I).End;
     myRange := WD.ActiveDocument.Range(Pos, Pos2);
     ShowMessage(WD.ActiveDocument.Bookmarks.Item(I).Name + ': ' + IntToStr(Pos)
       + ', ' + IntToStr(Pos2));
   end;

 WD.ActiveDocument.Close;
 WD.Quit;
 WD := Null;


YurikGL   (2004-06-21 18:20:00) [17]

Можно код, про закладки. Может чем помогу.
З.Ы. Опыт автоматизации ворда есть.


Наверх

Титульная страница Поиск, карта сайта Написать письмо