![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]Можно код, про закладки. Может чем помогу.
З.Ы. Опыт автоматизации ворда есть.