Може ли ????

6 отговора 230 прегледа
#1

Може ли ????

Здравейте .

Може ли Делфи да отваря / това го може/ бланка под Word и после на определените места да попълни бланката. После да я запише пак като Word документ.

Предварително благодаря
Ще черпя

Отговор
в отговор на Любитeл #2

Re: Може ли ????

Може. Но за съжаление нямам готов и пълен пример за целта. За да отвориш Word можеш да използваш следния код:

var Word: variant;

Word := CreateOleObject('Word.Application');
Word.Visible := True;

Естествено, Word-а трябва да е инсталиран и да е от 97 нагоре. Можеш да разгледаш структурата на класовете на Word в неговия си хелп или да си свалиш готови примери от Internet. Успех.

P.S. Пиша на изуст.

Mixy
Отговор
в отговор на Mixy #3

Re: Може ли ????

С две думи: правиш макрос на Word който ти попълва бланката. После кода от макроса го пренасяш върху обекта Word.

Ето един линк в който е показано как става:
[линк]

чети и дишай по-леко
Отговор
в отговор на Pechenia #4

Re: Може ли ????

Благодаря и на двамата. Ще опитам и ще видя кво ще стане.
Ще чета и ще дишам по-леко
И ако стане ЩЕ ЧЕРПЯ

Отговор
в отговор на Любитeл #5

Re: Може ли ????

Може.

За да дефинираш "определените места", най-лесно е да ползваш TextBox. От toolbar-a Forms избираш "Text Form Field", поставяш го на желаното място и после от Properties на textfield-а му задаваш име в полето Field Settings -> Bookmark.

След това в Делфи имаш нещо от сорта :



...

uses ComObj;

...

var Word, Workbook : OleVariant;
...

Word := CreateOleObject ( 'Word.Application' );
Word.Visible := false;
Workbook := Word.Documents.Open ( 'c:\path\file.doc' );

...

Workbook.FormFields.Item('BookmarkName1').Result := 'value1';
Workbook.FormFields.Item('BookmarkName2').Result := 'value2';
Workbook.FormFields.Item('BookmarkName3').Result := 'value3';
...

Workbook.SaveAs ( 'c:\path\new_file.doc' );


Word.Quit;
Word := Unasigned;

.....




_ _ _

Time is like a drug. Too much of it kills you.
Отговор
в отговор на Любитeл #6

Re: Може ли ????

Даже си бях писал компонент който да го прави автоматично (остана в старата фирма:( )

Бях го направил с тагове, които се заместват в последствие. Нещото работеше на базата на TMSWordApplication и TMSWordDocument.

-------------
Special killer double trouble triple extra nicotine monster!
Отговор
в отговор на killall #7

Re: Може ли ????

10х Това е най пълното обяснение което съм получавал във форума.
Благодаря , ще се опитам веднага да го приложа

Отговор