Borland C++ Builder 5.0 with Word Documents
От: AccessDenied Беларусь  
Дата: 01.03.02 16:39
Оценка:
Привет всем!

Может ктонибудь писал в билдере проекты в которых редактировались вордовские документы?
Помогите плиз.
Программист — птица вольная, не пнешь — не полетит.
Re: Borland C++ Builder 5.0 with Word Documents
От: Morpeh  
Дата: 04.03.02 03:53
Оценка:
Здравствуйте AccessDenied, Вы писали:


AD>Привет всем!


AD>Может ктонибудь писал в билдере проекты в которых редактировались вордовские документы?

AD>Помогите плиз.

А что ты конкретно хочешь, я писал прогу но только общался с excel'ем при помощи Varianta, но в принципе все в мире похоже, так что пиши может помогу.
Re[2]: Borland C++ Builder 5.0 with Word Documents
От: AccessDenied Беларусь  
Дата: 04.03.02 16:15
Оценка:
Здравствуйте Morpeh, Вы писали:


M>А что ты конкретно хочешь, я писал прогу но только общался с excel'ем при помощи Varianta, но в принципе все в мире похоже, так что пиши может помогу.


Задача состоит в редактировании вордовского документа из вилдеровского приложение( поиск и замена какихто определенных слов )

И если можно какиенить ссылки где можно прочитать хорошую инфу о работе с офисом из билдера ( OLE Automation )
Программист — птица вольная, не пнешь — не полетит.
Re: Borland C++ Builder 5.0 with Word Documents
От: tenzor http://www.selena.bryansk.ru
Дата: 05.03.02 22:16
Оценка:
Здравствуйте AccessDenied, Вы писали:


AD>Привет всем!


AD>Может ктонибудь писал в билдере проекты в которых редактировались вордовские документы?

AD>Помогите плиз.

Посмотри здесь
http://delphi.mastak.ru/faq/techno-4-.html
Re[3]: Borland C++ Builder 5.0 with Word Documents
От: Morpeh  
Дата: 06.03.02 06:59
Оценка:
Здравствуйте AccessDenied, Вы писали:

AD>Здравствуйте Morpeh, Вы писали:



M>>А что ты конкретно хочешь, я писал прогу но только общался с excel'ем при помощи Varianta, но в принципе все в мире похоже, так что пиши может помогу.


AD>Задача состоит в редактировании вордовского документа из вилдеровского приложение( поиск и замена какихто определенных слов )


AD>И если можно какиенить ссылки где можно прочитать хорошую инфу о работе с офисом из билдера ( OLE Automation )


Начну с последнего:
Либо я плохо искал либо ... в общем толком лично я нечего не нашел, хотя искал я на русском языке, может у "буржуев" и есть чего, но зато много инфы по делфи, но вот вчем фишка разный способ написания у билдера и дефи в OLE, так что разбирался я собственными силами и встроенной справкой которая в данном вопросе мало чем помогла. советую тебе посмотреть в справке Пример по Variant::Exec() там ты найдешь как примерно вызвать Word и затем его закрыть, но не жди от нее многого самому придется много колупать, к тому же возможно будут непонятные ошибки как это было у меня это я тебе гарантирую (честно)
А вот тебе пример:
#include <utilcls.h> // добавь в начало, иначе не пойдет
...
...
/*
ниже идет код процедуры или функции это смотря как ты сам захочешь.
Сначала можешь попробовать просто на форме поставить кнопку и данный код выполнять по клику.
*/
Variant MSDoc;
Variant MSWord;
bool MSVisible;
AnsiString DocFileName;
/*
здесь показываю как открыть файл вордом так что либо скинь какой ни буть файл на диск С с именем Users.DOC или измени имя и путь в DocFileName
*/
DocFileName = "C:\\User.doc";

MSWord = CreateOleObject("Word.Application"); // вызов ворда
MSVisible = true; // если MSVisible == true то ворд будет видим иначе будет сидеть в темноте
MSWord.OlePropertySet("Visible", MSVisible); // примерно так и предется опщаться с вордом
/*
вот на этом праздник кончился ... начились будни...
надо искать нужные тебе команды VBasic'a, а как? я делал так: запускал Word запускал макрос и производил действия которые будет делать моя программа, затем заходил в редактор макросов и изучал команды VB, затем перекидывал их ворд путь долгий но рабочий например:
открытие документа (C:\User.doc) вордом в VB выгледит так:
ChangeFileOpenDirectory "C:\"
Documents.Open FileName:="User.doc", ConfirmConversions:=False, ReadOnly:= _
False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _
"", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
Format:=wdOpenFormatAuto
а в билдере так:
*/
MSDoc = MSWord.OlePropertyGet("Documents").OleFunction("Open", DocFileName); // открытие документа


/*
Ну для начала хватит, если чего не понятно -> пиши
*/
MSWord.OleProcedure("Quit"); // сказать ворду чтобы "сваливал"
MSWord = Unassigned; // освободить переменную
Re[4]: Borland C++ Builder 5.0 with Word Documents
От: AccessDenied Беларусь  
Дата: 11.03.02 12:24
Оценка:
Привет всем.

Я решил свою проблему используя классы TWordDocument и TWordApplication.

Возникла другая проблема:
После того, как мое приложение отредактировало документ, оно запускает еще один экземпляр Ворда и показывает в нем отредактированый документ. Затем приложение закрывается. Но в момент закрытия приложения, оно автоматически закрывает не только запущеный им экземпляр ворда, но и вообще все запущеные экземпляры Ворда.

Может кто знает, как сделать так, чтобы "Ворды" на закрывались ?
Программист — птица вольная, не пнешь — не полетит.
Re[5]: Borland C++ Builder 5.0 with Word Documents
От: Morpeh  
Дата: 12.03.02 05:24
Оценка:
Здравствуйте AccessDenied, Вы писали:

AD>Привет всем.


AD>Я решил свою проблему используя классы TWordDocument и TWordApplication.


AD>Возникла другая проблема:

AD>После того, как мое приложение отредактировало документ, оно запускает еще один экземпляр Ворда и показывает в нем отредактированый документ. Затем приложение закрывается. Но в момент закрытия приложения, оно автоматически закрывает не только запущеный им экземпляр ворда, но и вообще все запущеные экземпляры Ворда.

AD>Может кто знает, как сделать так, чтобы "Ворды" на закрывались ?



Ты пример выше смотрел, вот там все работает правильно. И я там писал, что будут всякие ошибки, я сам лично много времени посвятил этому, перепробовал много всяких способов и все-таки остановился на Variant'e так как с ним проблем меньше. А что касается TWordDocument и TWordApplication то тут проблемы могут быть проблемы связанные с разными версиями офиса, сам сталкивался и поэтому начал искать другой способ, хотя если ты пишешь на конкретную конфу компа, то тогда ... Ну а вообще ты хоть кусок проги кинь, а то мне самому неохота писать, может, чем и помогу.
Re[6]: Borland C++ Builder 5.0 with Word Documents
От: AccessDenied Беларусь  
Дата: 12.03.02 17:52
Оценка:
Здравствуйте Morpeh.

вот куски кода:
есть 2 указателя:

TWordApplication *WordApplication;
TWordDocument *WordDocument;

WordApplication = new TWordApplication(Owner);
WordDocument = new TWordDocument(Owner);

// open document
WordApplication->Connect();
WordDocument->ConnectTo(WordApplication->Documents->
              Open((OleVariant)strFileName));
WordApplication->Visible = true;
WordDocument->Activate();

// editing .......

// end 
WordDocument->Disconnect();
WordApplication->Disconnect();


После этого прога пытается закрыть вообще все открытые ворды
Программист — птица вольная, не пнешь — не полетит.
Re[7]: Borland C++ Builder 5.0 with Word Documents
От: Morpeh  
Дата: 13.03.02 10:20
Оценка:
Здравствуйте AccessDenied, Вы писали:

AD>Здравствуйте Morpeh.


AD>вот куски кода:

AD>есть 2 указателя:

AD>
AD>TWordApplication *WordApplication;
AD>TWordDocument *WordDocument;

AD>WordApplication = new TWordApplication(Owner);
AD>WordDocument = new TWordDocument(Owner);

AD>// open document
WordApplication->>Connect();
WordDocument->>ConnectTo(WordApplication->Documents->
AD>              Open((OleVariant)strFileName));
WordApplication->>Visible = true;                                         ///// А вот эта строчка у меня не пашит
WordDocument->>Activate();

AD>// editing .......

AD>// end 
WordDocument->>Disconnect();
WordApplication->>Disconnect();
AD>


AD>После этого прога пытается закрыть вообще все открытые ворды


Ну а как ты хотел, ты ведь сам последней строчкой говоришь, чтобы сваливал весь ворд. я же писал как проще, если не взял бы да хоть проверил, мой способ сам бы убедился, к тому же он еще и быстрей с вордом работает. ну а вообще я не понял, зачем тебе открытый ворд, записал файл сделанный да и все, ну а если хочешь чтобы ворд не закрывался, то тебе надо либо на Variant переползать, либо, WordApplication не дисконестить а както по другому убивать, причем только указатель, а не сам ворд, либо писать какой-то обработчик на выход ворда.
Честно говоря меня твоя прога задела, я как на работу приехал так часа 4 сидел пытался, что либо придумать но ничего толкового не получилось. И к тому же я на днях перешел на BCB6. я еще попытаюсь, ну а если ты чего придумаешь, то напиши мне интересно!!!

С Уважением,
Morpeh

P.S.:
И всетаки посмотри мой пример, на мой взгляд проще будет.
Re[4]: Borland C++ Builder 5.0 with Word Documents
От: polar  
Дата: 15.10.03 12:04
Оценка:
Здравствуйте, Morpeh, Вы писали:

M>>>А что ты конкретно хочешь, я писал прогу но только общался с excel'ем при помощи Varianta, но в принципе все в мире похоже, так что пиши может помогу.


M>#include <utilcls.h> // добавь в начало, иначе не пойдет

M>DocFileName = "C:\\User.doc";

M>MSWord = CreateOleObject("Word.Application"); // вызов ворда

M>MSVisible = true; // если MSVisible == true то ворд будет видим иначе будет сидеть в темноте

M> Ну для начала хватит, если чего не понятно -> пиши

M>*/
M>MSWord.OleProcedure("Quit"); // сказать ворду чтобы "сваливал"
M>MSWord = Unassigned; // освободить переменную

А не подскажите как установить ширину колонки в таблице Word.