Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.14;
Скачать: CL | DM;

Вниз

Connect с WORD!!   Найти похожие ветки 

 
VCL   (2002-01-26 20:10) [0]

Я пытаюсь передать данные в Word. У меня на машине все нормально, у мя W98SE,
Office2000, все прекрасно работает! Hо вот на W95 и Office97 при попытке коннекта
с Word выдается ошибка "Ошибка при выполнении приложения-сервера". Все, даже кода
ошибки и класса я не знаю (у меня не было возможности получить столь необходимую
информацию, т.к. это была не моя тестовая машина без Delphi). Может быть кто-то
уже натыкался на это. Подскажите, пож-ста, в чем дело.

Делаю на Delphi, вот код:

type
TForm1 = class(TForm)
[skipped]
public
WrdApp:Variant;
end;

implementation

{$R *.DFM}

function GetOrCreateObject (const ClassName: string): IDispatch;
var
ClassID: TGUID;
Unknown: IUnknown;
begin
ClassID := ProgIDToClassID(ClassName);
if Succeeded (GetActiveObject(ClassID, nil, Unknown)) then
OleCheck (Unknown.QueryInterface (IDispatch, Result))
else
Result := CreateOleObject (ClassName);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
WrdApp:=GetOrCreateObject("Word.Application"); WrdApp.Documents.Add(extra
ctfilepath(application.exename)+"Name",EmptyParam);
WrdApp.Visible := True;
end;

Заранее спасибо!


 
VCL   (2002-01-28 18:17) [1]

Что, никто не знает???


 
Artog   (2002-01-28 18:48) [2]

Почему возникает ошибка сказать могу, но как ее решить на вскидку не скажу. Каждый COM объект, а Word это COM объект, имеет свой TGUID. У Word2000 и Word97 они разные. У Word97
TGUID = "{00020905-0000-0000-C000-000000000046}". Этот самый TGUID можно посмотреть, если запустить в реестре на поиск строку
"Word.Application".
Хотя думаю, если присвоить
ClassID := "{00020905-0000-0000-C000-000000000046}" и далее по тексту твоей проги, то будет работать с Word97. Но для Word2000 надо будет делать другое присваивание. Так что надо будет определять какой Word установлен на машине.


 
Alex2002   (2002-01-31 12:50) [3]

Я пользуюсь компонентами Servers, если их удалить из делфи, а затем импортировать снова через Import Type Library, то можно посмотреть через хинты, какие параметры есть у процедур.
Проще некуда определить и версию Word.

var vers:widestring;


begin
WordApplication1.ConnectKind:=ckNewInstance;//ckAttachToInterface;
WordApplication1.Connect;
vers:=WordApplication1.Version;
if vers="9.0" then
WordApplication1.Documents.Open(Shablon1,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam)
else
WordApplication1.Documents.Openold(Shablon1,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordDocument1.ConnectKind:=ckNewInstance;//ckAttachToInterface;
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);

WordApplication1.SaveAs(FileName1);
WordDocument1.Close;
WordApplication1.Disconnect;

end.

Если интересно то напиши,есть файлик с подробным описанием, как переинсталить серверные компоненты.

Считается, что такой способ работы быстрее и лучше.



Страницы: 1 вся ветка

Текущий архив: 2002.02.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
3-42657
DeNNiss
2002-01-17 08:08
2002.02.14
Помогите пожалуйста!


1-42763
DEPROL
2002-01-31 09:38
2002.02.14
Install Delphi5 for Win2k


1-42735
Alex
2002-01-30 21:50
2002.02.14
Елементы комбинаторики.


3-42652
Voi
2002-01-20 10:24
2002.02.14
Вот задача №2 или продолжение вопроса


14-42865
GARIK_PR
2001-12-25 13:36
2002.02.14
Потушить Windows