Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add")

11K
22 июня 2008 года
AleksP
24 / / 26.01.2007
При использовании следующего кода:

 
Код:
Word = CreateOleObject("Word.Application.8");
Word.OlePropertySet("Visible", true);
Word.OlePropertyGet("Documents").OleProcedure("Add");


на компьютере с Microsoft Word Standart Edition 2003 for Students and Teachers появляется сообщение об ошибке: Project Project1.exe raised exception class EOleSysError with message 'Exception ocurred'. Process stopped. Use Step or Run to continue. На компьютерах с другими версиями Microsoft Word ошибки не возникает.

В чем может быть причина и как можно ее устранить без переустановки Microsoft Word?
1
22 июня 2008 года
kot_
7.3K / / 20.01.2000
Цитата: AleksP
При использовании следующего кода:

 
Код:
Word = CreateOleObject("Word.Application.8");
Word.OlePropertySet("Visible", true);
Word.OlePropertyGet("Documents").OleProcedure("Add");


на компьютере с Microsoft Word Standart Edition 2003 for Students and Teachers появляется сообщение об ошибке: Project Project1.exe raised exception class EOleSysError with message 'Exception ocurred'. Process stopped. Use Step or Run to continue. На компьютерах с другими версиями Microsoft Word ошибки не возникает.

В чем может быть причина и как можно ее устранить без переустановки Microsoft Word?


попробуйте сделать так:

Код:
TStringList *List;
TRegistry *Reg;
try{
Reg = new TRegistry;
Reg->RootKey = HKEY_CLASSES_ROOT;
if(!Reg->OpenKeyReadOnly("Word.Application\\CurVer")){ ShowMessage("Error");return;}
List = new TStringList;
Reg->GetValueNames(List);
String appServ = Reg->ReadString(List->Strings[0]);

Word = CreateOleObject(appServ);
//...
}
__finally{
if(List)
delete List;
if(Reg)
delete Reg;
}
11K
22 июня 2008 года
AleksP
24 / / 26.01.2007
To kot_: Не помогает. Сообщение об ошибке остается.
1
22 июня 2008 года
kot_
7.3K / / 20.01.2000
Цитата: AleksP
To kot_: Не помогает. Сообщение об ошибке остается.


тогда выясняйте в чем ньюанс данной конкретной версии. Возможно существуют какие либо ограничения связанные с использованием объектов для данной версии. хз. На стандартной 2003 - работает нормально?

1
22 июня 2008 года
kot_
7.3K / / 20.01.2000
когда кстати генерируеться ошибка?
11K
22 июня 2008 года
AleksP
24 / / 26.01.2007
To kot_: Код тестировался на разных версиях Microsoft Word. Проблема возникает именно на версии Microsoft Word Standart Edition 2003 for Students and Teachers - это стандартный пакет Microsoft Office, который устанавливается на ноутбуки, изготовленные в США.

Ошибка возникает на Ошибка появляется на OleProcedure("Add").
1
23 июня 2008 года
kot_
7.3K / / 20.01.2000
Хм. Попробуйте записать макрос в самом ворде - возможно для этой версии есть какието нюансы? Маловероятно - но если ошибка вылетает только на этой версии - проверьте так. Или выложите где нибудь эту версию офиса проверю на виртуальной машине
11K
23 июня 2008 года
AleksP
24 / / 26.01.2007
Код макроса:

 
Код:
Sub Macro()
'
' Macro Macro
' Macro recorded 6/23/2008 by
'
  Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0
End Sub
1
24 июня 2008 года
kot_
7.3K / / 20.01.2000
Цитата: AleksP
Код макроса:

 
Код:
Sub Macro()
'
' Macro Macro
' Macro recorded 6/23/2008 by
'
  Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0
End Sub


Ну а сюда вы зачем этот код макроса выкладываете? По вашему я должен найти версию офиса для студентов и когото там, разобраться в чем проблема и доложить вам? :) Прикольный подход.
Поставьте на виртульную машину нужный вам офис - установите туда же билдер и проверяйте в чем проблема.

13K
15 сентября 2008 года
123456
5 / / 22.09.2005
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;
}

String f_name = "C:\\1.doc";//-этой и седующей строки у тя нет а НАДО


App.OlePropertyGet("Documents").OleProcedure("Open", f_name.c_str());
App.OlePropertyGet("Documents").OleProcedure("Print");
App.OlePropertyGet("Selection").OleProcedure("MoveDown", 5, 8); // <--- &#241;&#228;&#226;&#232;&#227;&#224;&#229;&#236; &#234;&#243;&#240;&#241;&#238;&#240; &#237;&#224; 8 &#241;&#242;&#240;&#238;&#234; &#226;&#237;&#232;&#231;
App.OlePropertySet("Visible",true);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог