открыть документ Word в Builder
WordAplication1->Documents->Open(FileName,...)
где FileName и остальные параметры (которые, как я понимаю не обязательны, но в ходе моих мучений, начинаю думать, что всякое может быть) - типа Variant (или даже OleVariant)
компилятор это проглатывает, а Word выдает ошибку типа несовпадение типов???
(BCB 5.0 и Word XP)
В общем суть вопроса в том, как открыть документ Word для последующего измывательства над ним.
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 почему-то гючит.
Причем хотелось бы это сделать не через ShellExecute, а через свойства WordAplication->...
С уважением, OS17.
P.S. Кстати, пример у меня не захотел компилироваться.
Причем хотелось бы это сделать не через ShellExecute, а через свойства WordAplication->...
С уважением, OS17.
P.S. Кстати, пример у меня не захотел компилироваться.
Уважаемый Mark, может быть я что то неправильно написал, но мне нужно не создать документ Word, а открыть уже существующий, для его последующего изменения и использования информации из него.
Причем хотелось бы это сделать не через ShellExecute, а через свойства WordAplication->...
С уважением, OS17.
P.S. Кстати, пример у меня не захотел компилироваться.
В примере там где Disconnect не кстати появился DataModule. С этой поправкой, положив на форму WordApplication и WordDocument, все откомпилировалось. BCB6 и Office2k.
Да, по поводу открытия существующего точно не скажу. Зато подскажу способ: открываем Ворд, далее Сервис->Макрос->Начать запись, далее делаем то что хочется, останавливаем запись и, зайдя в Сервис->Макрос->Макросы->Изменить, изучаем что там происходило.
Ещё раз оговорюсь, что у меня были проблемы с применением Visible (если конечно пользователю нужно показывать документ). Он отрабатывает только на WordGlobal, если я не ошибаюсь? Добавление этого компонента сделало процесс компиляции невразумительным...
#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]
.........// Стандартный код
.........// Стандартный код
public: // User declarations
void __fastcall WordInit(String File); // Объявление функции
Variant vWApp,vWDocs,vWDoc,ReplaceType; // Объявление переменных
Надеюсь я помог. Удачи:)
Надеюсь я помог. Удачи:)
OS17 уже институт закончил и на пенсии:)
:) Мало ли кто будет искать инфу, а тема не закрыта была. Лучше поздно, чем никогда. (может я 7 лет ответ искал :))