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

Вниз

Версия MSOffice   Найти похожие ветки 

 
kalishenko   (2004-11-12 16:36) [0]

Как программно определить версию установленного офиса, т.е. 97, 2000 или XP?


 
Shadow-UA   (2004-11-12 19:15) [1]

--->
Попробуй через реестр:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office
Там есть ключ с name"ом в зависимости от версии Office: 9, 10, 11 ;((
А может есть и попроще ??? Хйзн.
---> Shadow


 
GanibalLector ©   (2004-11-13 12:10) [2]

...
WordApp := CreateOleObject("Word.Application");
...
Caption:=WordApp.Version;


 
zz 5 ©   (2004-11-13 12:20) [3]

2GanibalLector А ссылку обнулить ?


 
GanibalLector ©   (2004-11-13 12:22) [4]

2 zz 5
Что за ссылка?


 
kalishenko   (2004-11-15 09:44) [5]

Хорошо, с этим разобрался. Но вот как в зависимости от того или иного установленного офиса выполнять функцию WordApplication1.Documents.Open не знаю. У нее в разных модулях количество параметров и сами параметры разные, т.е. если используется Word97.pas - одно количество, WordXP.pas - совершенно другое. При попытке делать следующее

if WordApplication1.Version = "10.0" then
      WordApplication1.Documents.Open(Filename,          EmptyParam,EmptyParam,EmptyParam,
        EmptyParam,EmptyParam,EmptyParam,
        EmptyParam, EmptyParam,
        EmptyParam,EmptyParam,
        EmptyParam,EmptyParam,
        EmptyParam,EmptyParam)
      else if WordApplication1.Version = "8.0" then
        WordApplication1.Documents.Open(Filename,            EmptyParam,EmptyParam,EmptyParam,
          EmptyParam,EmptyParam,EmptyParam,
          EmptyParam,
          EmptyParam,EmptyParam);

естественно компилятор ругается. Как быть?


 
zz 5 ©   (2004-11-15 10:40) [6]

Как вариант, можешь отказаться от классов TWordApplication, и работать с вариантной переменной. Естесственно из uses убираешь
Win97, WinXP.
{ Пример }
const
 WordApplication = "Word.Application";
var
 FWordApp: Variant;  { ????????? Word }
 Result: HRESULT;
 Unknown: IUnknown;
 WGuid: TGUID;
begin
 { ??????????? ? ??????? ????????????? }
 WGuid := StringToGUID(WordApplication);
 Result := GetActiveObject(WGuid,nil,Unknown);

 if Result = MK_E_UNAVAILABLE then
   FWordApp := CreateOleObject(WordApplication)
 else
   FWordApp := GetActiveOleObject(WordApplication);

 FWordApp.Documents.Open(AFileName,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam); { Должно полдойти и для 97 и для XP }

Ну и так далее...

2GanibalLector WordApp := Unassigned


 
kalishenko   (2004-11-15 11:38) [7]

А как открытый таким способом документ редактировать, ведь, как я понял, для автоматических оле-объектов метод connect не работает?


 
kalishenko   (2004-11-15 11:38) [8]

2 zz 5
А как открытый таким способом документ редактировать, ведь, как я понял, для автоматических оле-объектов метод connect не работает?


 
zz 5 ©   (2004-11-15 12:19) [9]

1) Что за метод Connect ?
2) Редактировать в каком смысле: с помощью команд посылаемых серверу или вручную через Word ?


 
kalishenko   (2004-11-15 12:24) [10]

1) Метод WordDocument.Connect или WordDocument.ConnectTo - коннект к серверу или к уже открытому документу.
2) С помощью команд, посылаемых серверу.


 
zz 5 ©   (2004-11-15 12:43) [11]

Да не нужен метод Connect здесь, вот пример:
const
 WordApplication = "Word.Application";
var
 WordApp, WordDoc: Variant;
 Result: HRESULT;
 Unknown: IUnknown;
 WGuid: TGUID;
begin
 if OpenDialog1.Execute then
 begin
   WGuid := StringToGUID(WordApplication);
   Result := GetActiveObject(WGuid,nil,Unknown);

   if Result = MK_E_UNAVAILABLE then
     WordApp := CreateOleObject(WordApplication)
   else
     WordApp := GetActiveOleObject(WordApplication);

   WordApp.Documents.Open(OpenDialog1.FileName,EmptyParam,EmptyParam,EmptyParam,
                           EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                           EmptyParam,EmptyParam);

   WordDoc := WordApp.ActiveDocument;
   WordDoc.Range.Text := "Hello, World";
   WordApp.Visible := True;
   WordApp := Unassigned;
 end;

WordDoc ссылка на открытый документ, с ней и работаешь


 
kalishenko   (2004-11-15 14:17) [12]

Спасибо.



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

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

Наверх




Память: 0.49 MB
Время: 0.041 c
6-1097758501
Григорьев Антон
2004-10-14 16:55
2004.12.26
Как авторизоваться на прокси?


14-1102433005
Сергей Г
2004-12-07 18:23
2004.12.26
Куда мы катимся


14-1102272925
Поручик
2004-12-05 21:55
2004.12.26
WinAmp жив


14-1102489705
NewDelpher
2004-12-08 10:08
2004.12.26
Переводчик с C++ на Pas


1-1102706736
kirilllius
2004-12-10 22:25
2004.12.26
Привязка ПО к CD