Текущий архив: 2003.05.19;
Скачать: CL | DM;
ВнизПроблемы с подключением к Word Найти похожие ветки
← →
VVR (2003-05-06 14:46) [0]Привет всем!
Проблема с подключением к Word из-под Windows 2000, XP.
Из-под Windows 98 все работает четко и быстро.
А делаю я так:
1). Сначала коннектюсь :) к Word:
try
W:=GetActiveOleObject("Word.Application");
except
W:=CreateOleObject("Word.Application");
end; //try
На этом этапе, если стоит Windows 98, то все нормально с любым MS Office-ом.
Если стоит Windows 2000,XP + MS Office XP, то тоже все нормально.
А если стоит Windows 2000,XP + MS Office 2000, то получаю ругательство:
EOleSysError
Вызов был отклонен
Вот это проблема №1 - Как подружить Дельфи с Виндой 2000,XP и Офисом 2000?
2). Далее добавляю пустой документ:
W.Application.Documents.Add(EmptyParam,EmptyParam);
W.Application.Visible := True;
И опять, если стоит Windows 98, то все нормально.
А если стоит Windows 2000,XP то получаю ругательство от Офиса о том, что во время последнего открытия документа normal.dot произошла серьезная ошибка...
И это только если п.1 и п.2 следуют сразу друг за другом.
Если же между ними есть временной промежуток, например по одной кнопке коннектимся к Ворду, а по другой добавляем документ и делаем видимым, то тоже все нормально, и normal.dot оказывается совершенно ни при чем.
Так вот как совмесить п.1 и п.2 в одном месте ( ну чтобы на две кнопки не нажимать, а весь процесс присоединения к Ворду, добавление нового документа, ну и, например сброс каких-нибудь данных - все одним ударом :) ???
Да, и еще одно. Если установить Винду 2000 поверх Винды 98, то тоже все прекрасно работает :) И с любым Вордом :)
Что ж есть такое в Винде 98, чего не хватает 2000 и XP?
Заранее благобдарю. Вячеслав.
← →
wildbit (2003-05-06 17:07) [1]Попробуй поюзать раннее связывание, на закладке Servers
← →
VVR (2003-05-07 07:19) [2]Да пробовал я через компоненты на вкладке Servers.
Та же самая ерунда :(
Правда под 98 Виндой тоже все замечательно работает :)
← →
Rocker (2003-05-07 07:30) [3]Попробуй код:
var
Unknown : IUnknown;
Result : HResult;
App : Variant;
begin
Result := GetActiveObject(ProgIDToClassID("Word.Application"),nil,Unknown);
if (Result = MK_E_UNAVAILABLE) then
app := CreateOleObject("Word.Application")
else
App := GetActiveOleObject("Word.Application");
App.Visible := True;
end;
Проверено в WINDOWS XP!
← →
VVR (2003-05-07 08:07) [4]Попробовал, ругается на GetActiveObject. Не понимает.
[Error] Main.pas(41): Undeclared identifier: "GetActiveObject"
Может чего еще указать где-то надо?
Страницы: 1 вся ветка
Текущий архив: 2003.05.19;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.007 c