Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с Word  (Прочитано 6797 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Nevis
Гость
« : 30-11-2004 11:50 » new

Кто-нибудь может помочь с пересылом текста из Edit в документ Word, причем еще и в определенное место?
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #1 : 14-12-2004 20:02 » 

Nevis, Используй OLE. Легко и не принуждённо делается. Улыбаюсь правда у меня твм затык вышел. Вариант для CBuilder могу завтречка выложить(если на счету деньги останутся). Там довольно простые функции. Говорят описание можно найти в хелпах для разработчиков на VB в MS Office правда они обычно не установленны в стандартной конфигурации.

Хотя нет завтра не выложу выложу сейчас.
Код:
    bool ServerIsRunning;
    IUnknown *Unknown;
    HResult Result;
    AnsiString AppProgID;
    Variant App;
    Variant Doc;

    AppProgID = "Word.Application";
    ServerIsRunning = false;

    Result = GetActiveObject(ProgIDToClassID(AppProgID),NULL,&Unknown);
    if (Result == MK_E_UNAVAILABLE) {
        App = CreateOleObject(AppProgID);
    }
    else {
        App = GetActiveOleObject(AppProgID);
        ServerIsRunning = true;
    }

    App.OlePropertySet("Visible",true);

    App.OlePropertyGet("Documents",&Doc);
    Doc.OleFunction("Add");



    if (!ServerIsRunning)
        App.OleFunction("Quit");
    App = Unassigned;

/*    WA->Connect();
    WA->set_Visible(true);
//    WA->ShowMe();
//    WA->Visible = true;
//    WA->Documents->Add();
    _Document *WD = WA->Documents->Add();
    WD->Paragraphs->Add();//->set_Style((Variant) "Heading 1");
//    WD->Paragraphs->Item(1)->get_Style("");
//    WD->Paragraphs->Item(1)->set_Style((Variant) "Heading 1");
    Range *DR = WD->Paragraphs->Item(1)->get_Range();
//    Range *DR = WD->Range(0,0);
    DR->set_Start(0);
    DR->set_End(0);
    DR->set_ShowAll(true);
    DR->set_Style((Variant) "Heading 1");
    DR->InsertAfter((wchar_t *) "HELP HELP HELP");
    DR->set_Text((wchar_t *) "HELP HELP HELP");
    WD->TextEncoding = msoEncodingCyrillic;
//    WA->Documents->Add();
    ;*/

Я в коде игрался с двумя вариантами обращения к OLE. Первый не закоментенный это обращение непосредственно к OLE, второй закоментенный это предварительно импортировал библиотеку для работы с вордом в билдер. Должен заметить второй вариант компилится так долго, что хочется застрелится или застрелить.

Возник при работе с этим делом вопрос вот эти две процедуры    
Код:
DR->InsertAfter((wchar_t *) "HELP HELP HELP");
DR->set_Text((wchar_t *) "HELP HELP HELP");
по идее должны были вставить текст в документ, но они меня проигнорировали а вот функция создания абзаца и стиля для него нормально работаю.
Странно всё это.  Я шокирован!

Может кто сталкивался. Word 2003, Винда XP.
« Последнее редактирование: 02-12-2007 18:49 от Алексей1153++ » Записан

Странно всё это....
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #2 : 15-12-2004 20:10 » 

В общем проблемка решилась текст вставляется, но правда только если работать не посредственно с OLE. Да ну и фиг с ним мне и так ништяк и собирается мухой.
Nevis, могу кинуть тебе маленьку подборку документов на эту тему, если скажешь адрес, можно через ЛС.
Записан

Странно всё это....
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines