Error 1004

Программирование на Visual Basic for Applications
Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Error 1004

Сообщение Annushka » 05.04.2006 (Ср) 11:42

Подгружаю надстройку и активизирую ее:

Код: Выделить всё

Private Sub Workbook_Open()
   
    Set myAddIn = AddIns.Add(Filename:=ActiveWorkbook.Path & "\Form.xla", CopyFile:=False)
    AddIns("Form").Installed = True

End Sub



На некоторых компах c Office 2002 выполняется нормально, а на других на строку
Код: Выделить всё

AddIns("Form").Installed = True

выдается ошибка:
Error 1004: Нельзя установить свойство Installed класса AddIn
Не подскажете, куда смотреть, чтобы Office не переустанавливать?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.04.2006 (Ср) 11:51

AddIns.Add(Filename:=ActiveWorkbook.Path & "\Form.xla", False).installed=true :?:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 05.04.2006 (Ср) 12:20

Вот так правильно:
AddIns.Add(Filename:=ActiveWorkbook.Path & "\Form.xla", CopyFile:=False).installed=true

Но эффект тот же :(

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 05.04.2006 (Ср) 12:22

может этот addin уже на этих компах установлен :?:

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 05.04.2006 (Ср) 12:25

Я так понимаю, что командой
Код: Выделить всё
AddIns("Form").Installed = True

я просто ставлю галочку на надстройку
Или нет?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 05.04.2006 (Ср) 13:33

галочку о том, что она установлена в системе.

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 05.04.2006 (Ср) 13:46

Мне кажется, что галочка обозначает, что в данный момент надстройка подключена и ею можно пользоваться.
В частности, у меня при проставлении галочки появляется дополнительное меню, которое исчезает при удалении галочки.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.04.2006 (Ср) 13:56

Annushka права (а Konst_One нет :razz: )

Я думаю, что-то связанное с правами пользователя тут.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 05.04.2006 (Ср) 14:45

возможно, возможно...
но все-таки:

· Если вы пишете инсталлятор для ваших программ, который помещает шаблоны с макросами в папку автозагружаемых файлов Word(Excel) [5], то совсем необязательно требовать перезагрузки редактора, чтобы макросы из помещенного в эту папку шаблона стали доступны. VBA позволяет активизировать такие шаблоны без перезагрузки Microsoft Word(Excel) - для этого существует специальная команда


Код: Выделить всё
AddIns.Add("полное имя шаблона, включая путь к нему и расширение").Installed = True



Эта команда эквивалентна ручному подключению шаблона с макросами через меню Word(Excel) "Сервис - Шаблоны и надстройки". Однако если она будет выполнена сразу же после программного копирования шаблона в папку автозагружаемых файлов, то может возникнуть ошибка вследствие того, что при таком копировании Word(Excel) должен зарегистрировать этот шаблон как доступный для подключения (после регистрации он появится в диалоговом окне "Сервис-Шаблоны и надстройки", но не будет отмечен как загруженный). На это уходит пара секунд, и если в этот момент вызвать команду подключения шаблона, то Word может ответить программе, что такого шаблона в папке автозагрузки нет, что вызовет ошибку.

Предотвратить подобную ситуацию можно, например, с помощью следующей конструкции, - разместите ее после команды копирования шаблона "FileCopy":



Код: Выделить всё
a="Имя шаблона в папке автозагрузки с полным указанием пути"

On Error Resume Next

Do

If AddIns(a).Installed Then Exit Do

AddIns(a).Installed = True

Loop


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

· Для удаления шаблона без выгрузки Word можно использовать такой же код:



Код: Выделить всё
a="Имя шаблона в папке автозагрузки с указанием пути"

On Error Resume Next

Do

If Not AddIns(a).Installed Then Exit Do

AddIns(a).Installed = False

Loop

AddIns (a).Delete

Kill (a)



Команда "Kill" выполняет удаление файла.

· Команда "On Error Resume Next", встречающаяся в обоих вышеприведенных фрагментах кода – это обработчик ошибок. В случае возникновения ошибки в коде после него (скажем, связанной с обращением к несуществующему объекту) он продолжит выполнение программы с команды, следующей за вызвавшей ошибку. Обработчик ошибок может также иметь вид "On Error GoTo метка", и тогда при ошибке в коде после него произойдет переход к указанной в обработчике метке и выполнение программы продолжится именно с нее.

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 05.04.2006 (Ср) 16:10

Может быть, я делаю неправильно.
Я выкладываю на сеть файл xla.
При запуске однотипных файлов xls надстройка втягивается и активизируется ("галочка"), что позволяет пользоваться макросами из xla.
При выходе из xls надстройка дезактивируется.
Я не копирую в каталог автозагрузки и не перезапускаю Excel.

А дело действительно оказалось в правах пользователя (под админом работает, как часики). Помаявшись с доступами на каталоги и реестр, установила Office, проблемы все пропали. :)

Спасибо всем большое.

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 10.04.2006 (Пн) 12:46

История продолжается на другом компе. Только здесь уже стоял Office 2003. Но стояла галочка "обычный простой доступ к файлам и папкам".
Убрала галочку, переустановила Office 2003. Под админом идет, под пользователем та же ошибка.
Дала полный доступ пользователю на C:\Program Files\Microsoft Office. То же самое!
Чего ей еще нужно? :shock: :(

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.04.2006 (Пн) 13:38

Доступ надо вешать на надстройку, а не на папку офиса...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 10.04.2006 (Пн) 14:47

Надстройка лежит на сети на общем диске

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.04.2006 (Пн) 14:57

Но она же не копируется, поэтому вешать разрешения прямо на неё...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 10.04.2006 (Пн) 15:07

Диск сетевой с ПОЛНЫМ доступом для всех

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 10.04.2006 (Пн) 15:10

попробовать сделать тоже самое, что делает твоя программа при запуске (устанавливает и регистрирует надстройку, как я понял), только в ручном режиме на компьютере, где установлены юзеровские права (где ошибка у тебя вылезает)

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 10.04.2006 (Пн) 15:23

Пробовала. При проставлении галочки на надстройке (активировании ее) Excel виснет.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 10.04.2006 (Пн) 16:22

значит надор разбираться с праильной установкой данной настройки на этом компе, сначала вручную, а уже потом, при успехе, программно

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 10.04.2006 (Пн) 16:43

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


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 75

    TopList