Форум: "Основная";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c