Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

открыть документ Word в Builder

1.9K
09 декабря 2002 года
OS17
40 / / 09.12.2002
Люди, задаю очень простой вопрос, поставивший меня в тупик. Почему, когда пишешь строку следующего содержания:
WordAplication1->Documents->Open(FileName,...)
где FileName и остальные параметры (которые, как я понимаю не обязательны, но в ходе моих мучений, начинаю думать, что всякое может быть) - типа Variant (или даже OleVariant)

компилятор это проглатывает, а Word выдает ошибку типа несовпадение типов???
(BCB 5.0 и Word XP)

В общем суть вопроса в том, как открыть документ Word для последующего измывательства над ним.
1.7K
09 декабря 2002 года
Mark
114 / / 21.11.2002
TVariant Template, path;

Template = TVariant("c:\\MyTemplate.dot");
path = TVariant("c:\\MyDoc.doc");

Создаем документ по шаблону.

WordApplication->Connect();
WordApplication->Documents->Add(&Template, EmptyParam);
WordDocument->ConnectTo(WordApplication->ActiveDocument);

Записываем текст в текстовый блок.

WordDocument->Shapes->Item(TVariant(1))->Select();
WordApplication->Selection->TypeText(TVariant("Какой-то текст"));

Сохраняем и закрываем.

WordDocument->SaveAs(path);
DataModule1->WordApplication->Disconnect();

Предпочитаю не показывать на экране все это хозяйство, так как Visible почему-то гючит.
1.9K
10 декабря 2002 года
OS17
40 / / 09.12.2002
Уважаемый Mark, может быть я что то неправильно написал, но мне нужно не создать документ Word, а открыть уже существующий, для его последующего изменения и использования информации из него.
Причем хотелось бы это сделать не через ShellExecute, а через свойства WordAplication->...

С уважением, OS17.

P.S. Кстати, пример у меня не захотел компилироваться.
1.9K
10 декабря 2002 года
OS17
40 / / 09.12.2002
Уважаемый Mark, может быть я что то неправильно написал, но мне нужно не создать документ Word, а открыть уже существующий, для его последующего изменения и использования информации из него.
Причем хотелось бы это сделать не через ShellExecute, а через свойства WordAplication->...

С уважением, OS17.

P.S. Кстати, пример у меня не захотел компилироваться.
1.7K
11 декабря 2002 года
Mark
114 / / 21.11.2002
Цитата:
Originally posted by OS17
Уважаемый Mark, может быть я что то неправильно написал, но мне нужно не создать документ Word, а открыть уже существующий, для его последующего изменения и использования информации из него.
Причем хотелось бы это сделать не через ShellExecute, а через свойства WordAplication->...

С уважением, OS17.

P.S. Кстати, пример у меня не захотел компилироваться.


В примере там где Disconnect не кстати появился DataModule. С этой поправкой, положив на форму WordApplication и WordDocument, все откомпилировалось. BCB6 и Office2k.

Да, по поводу открытия существующего точно не скажу. Зато подскажу способ: открываем Ворд, далее Сервис->Макрос->Начать запись, далее делаем то что хочется, останавливаем запись и, зайдя в Сервис->Макрос->Макросы->Изменить, изучаем что там происходило.

Ещё раз оговорюсь, что у меня были проблемы с применением Visible (если конечно пользователю нужно показывать документ). Он отрабатывает только на WordGlobal, если я не ошибаюсь? Добавление этого компонента сделало процесс компиляции невразумительным...

53K
30 ноября 2009 года
Pala4
10 / / 30.11.2009
[COLOR="#ff0000"]Пример части кода .cpp файла для открытия документов WORD[/COLOR]

Код:
#include <word_2K.h> // Подключение зависит от версии WORD
#pragma link "Word_2K_SRVR"


void __fastcall TForm1::Button1Click(TObject *Sender)
{
   try{
       vWApp=Variant::CreateObject("Word.Application"); // Получить доступ к приложению WORD
       vWApp.OlePropertySet("Visible", True); }catch (...){
       Application->MessageBox("Невозможно открыть Microsoft Word!"
       " Возможно этого приложения на компьютере не
установлено.","Ошибка",MB_OK+MB_ICONERROR);
       }
   if (OpenDialog1->Execute())
      {
      WordInit(OpenDialog1->FileName.c_str()); // Функция открытия документа WORD
      }

void __fastcall TForm1::WordInit(String File)
{
   vWDocs=vWApp.OlePropertyGet("Documents"); // Доступ к списку документов
   vWDocs.OleProcedure("Open",StringToOleStr(File)); // Открытие выбранного файла
   vWDoc=vWDocs.OleFunction("Item",1); // Доступ к документу
}


[COLOR="Red"]Код .h файла[/COLOR]

 
Код:
#include "Word_2K_SRVR.h" // Советую ставить инклуд вконце списка инклудов, иначе компилятор может выдавать ошибки

.........// Стандартный код
.........// Стандартный код

public:     // User declarations

       void __fastcall WordInit(String File); // Объявление функции

       Variant vWApp,vWDocs,vWDoc,ReplaceType; // Объявление переменных

Надеюсь я помог. Удачи:)
246
30 ноября 2009 года
GIZMO
1.8K / / 30.07.2004
Цитата: Pala4

Надеюсь я помог. Удачи:)


OS17 уже институт закончил и на пенсии:)

53K
30 ноября 2009 года
Pala4
10 / / 30.11.2009
Цитата: GIZMO
OS17 уже институт закончил и на пенсии:)


:) Мало ли кто будет искать инфу, а тема не закрыта была. Лучше поздно, чем никогда. (может я 7 лет ответ искал :))

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог