Microsoft visual basic run time error 2147221164 80040154 класс не зарегистрирован

This code has been running for several years.  This morning it did not.  The VBA code is as follows:
  • Remove From My Forums
  • Question

  • This code has been running for several years.  This morning it did not.  The VBA code is as follows:

    Private Sub Form_Open(Cancel As Integer)
      Set rstblBankComposite = New ADODB.Recordset
      With rstblBankComposite
        .Open _
          «SELECT [As-Of Date] AS MaxDate » & _
          «FROM tblBankComposite » & _
          «ORDER BY [As-Of Date] DESC», _
          CurrentProject.Connection

    The error number and message is: Run-time error ‘-2147221164 (80040154):’  ‘Class not registered’

    When I place the cursor on «CurrentProject.Connection», I get «CurrentProject.Connection = <Class not registered>»

    My Windows environment is Windows 7 Professional SP 1 32 Bit, Version 6.1.7601 Service Pac 1 Build 7601.

    My Access environment is Access 2013 (15.0.4420.1017) MSO (15.0.4535.1002) 32 bit.

    My application code is in one Acess file and the data is linked in a separate Access file.  From the application code file I can expand the Navigation bar, select Tables, click on the file and view the table tblBankComposite.  I can run a
    report in the application file and it pulls data from the data Access file.

    Any suggestions?

    • Moved by

      Wednesday, October 23, 2013 5:10 AM
      Access related question

Answers

  • This error code refers to fields in the MSysObjects table usually and can occur for many reasons. Open a query based on the table and enter the error code -2147221164 in the criteria box for the ‘Id’ field or the ‘Flags’ field . It
    could be a corrupted connection string or form or something else. You cannot delete or edit entries in this table , but at least you know where to start.

    • Marked as answer by
      Tom Stripling
      Wednesday, October 23, 2013 7:33 PM

Содержание

  1. Vba run time error 2147221164 80040154 класс не зарегистрирован
  2. Исправляем 2147221164
  3. 2147221164 (0x80040154): Класс не зарегистрирован — что делать?
  4. Когда появляется ошибка 2147221164?
  5. Справляемся с проблемой
  6. Регистрируем библиотеку comcntr.dll
  7. Создаем новое приложение СОМ+
  8. Vba run time error 2147221164 80040154 класс не зарегистрирован
  9. Лучший отвечающий
  10. Вопрос
  11. Vba run time error 2147221164 80040154 класс не зарегистрирован
  12. Исправляем 2147221164
  13. 2147221164 (0x80040154): Класс не зарегистрирован — что делать?
  14. Когда появляется ошибка 2147221164?
  15. Справляемся с проблемой
  16. Регистрируем библиотеку comcntr.dll
  17. Создаем новое приложение СОМ+

Vba run time error 2147221164 80040154 класс не зарегистрирован

Ошибка 2147221164 0x80040154

Всем привет, сегодня рассмотрим, вопрос из за чего происходит ошибка 2147221164 0x80040154 в 1С и как ее решать. И так немного теории 🙂 , когда информационные базы данных, обмениваются между собой информацией, то они задействуют COM-соединение. И так начинается попытка соединения из конфигурации 8.3 с конфигурацией 8.1, в итоге может выскочить При попытке соединения с COM-сервером произошла следующая ошибка:

Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Класс не зарегистрирован”. Смотрим как решить.

Вот более детально как выглядит ошибка 2147221164

Ошибка 2147221164 0x80040154 в 1С

Ошибка 2147221164 0x80040154 появляется, исключительно на сервере с базой данных, если выполнить соединение локально, все будет ок. На сервере 1С установлены версии 8.1 (x86), 8.2 (x64), 8.3 (x64). Источник проблем в версии 64 битной, так как ей требуется обратиться к 32-х библиотеке comcntr.dll, а на прямую это не реально, что ведет к использованию 64-х битного COM+, который умеет работать с 32-х библиотеками.

Исправляем 2147221164

На сервере 1С выполняем следующие действия.

  1. Для исправления 2147221164 о ткрываем консоль «Службы компонентов» (Панель управления -> Администрирование -> Службы компонентов).
  2. В этой консоли открываем Службы компонентов -> Компьютеры -> Мой компьютер. Правый клик по пункту“Приложения COM+”, Создать -> Приложение.
  3. Далее. В окне «Установка или создание нового приложения» выбираем «Создать новое приложение».
  4. Вводим понятное имя для нового приложения, например, “V8_ComConnector”, способ активации — «Серверное приложение».
  5. В качестве учетной записи для запуска приложения выбираем “Указанный пользователь” и через кнопку “Обзор” находим учетку, под которой запускается сервер 1С v 8.3. У нас это локальная учетная запись с именем “USR1CV8”. Следующие 2 экрана можно пропустить (Далее, Далее, Готово) или сделать следующий пункт на втором из них. Мы пропускаем.
  6. В ветке только что созданного приложения открываем узел «Роли» и в нём роль «CreatorOwner». Правый клик по пункту «Пользователи», Создать -> Пользователь. Здесь выбираем учетку, под которой запускается сервер 1С v 8.3. У нас это локальная учетная запись с именем “USR1CV8”.
  7. В ветке созданного приложения (“V8_ComConnector”) переходим на узел «Компоненты». Правый клик, Создать -> Компонент. Далее.
  8. Выбираем «Установка новых компонентов», и в появившемся окне выбираем нужную DLL-ку (C:Program Files (x86)1cv81bincomcntr.dll). Завершаем создание компонента.
  9. Открываем свойства только что созданного компонента (V81.COMConnector.1), переходим на вкладку «Безопасность», в списке «Явно установленные для выделенных объектов роли» устанавливаем флажок напротив роли “CreatorOwner”.

Все косяка 2147221164 должно уже не быть. Если соединение с базой 8.1 устанавливается из версии 8.2, то нужно в раздел “V8_ComConnector -> Роли -> CreatorOwner -> Пользователи” добавить и пользователя, от имени которого запускается сервер 1С 8.2 (у нас это “USR1CV82”). Как видите, порядок действий не такой сложный и долгий и решает ошибку 2147221164, буквально минут за 15.

Источник

2147221164 (0x80040154): Класс не зарегистрирован — что делать?

В программном обеспечении 1С, как и в любом другом, иногда возникают ошибки. Это не дает софту нормально функционировать и может затормозить работу целой организации. Поэтому нужно знать, как справляться с различными сбоями. В частности, сегодня мы разберем, из-за чего возникает ошибка «2147221164 (0x80040154): Класс не зарегистрирован», и что нужно сделать, чтобы ее исправить.

Когда появляется ошибка 2147221164?

Рассматриваемая ошибка появляется из-за конфликта версий 1С, которые в данный момент устанавливают между собой соединение. Разберем подробнее. Информационные БД 1С производят обмен данных при помощи СОМ-соединения. И, если, например, платформа 1С:Предприятие конфигурации 8.3 пытается установить связь с 1С версии 8.1, то на этом этапе при попытке подключения к СОМ-серверу и выскакивает данная ошибка.

Для начала определим, что у сервера 1С есть несколько версий:

  1. 32-битная 8.1 (х86).
  2. 64-битные 8.2 и 8.3 (х64).

Неполадки появляются на самом сервере с БД. Корень проблемы в том, что версии 1С архитектуры х64 не могут напрямую обратиться к 32-битной библиотеке comcntr.dll. В этом случае соединение происходит при помощи приложений СОМ+, способных взаимодействовать с библиотеками х86.

Справляемся с проблемой

Заканчиваем с теорией и переходим к практике – пробуем исправить ошибку «2147221164 (0x80040154): Класс не зарегистрирован».

Регистрируем библиотеку comcntr.dll

Ошибка может проявиться, если не зарегистрирована библиотека comcntr.dll. Решаем ее следующим образом. Вызываем строку «Выполнить» (кликнув ПКМ по кнопке «Пуск») и вводим regsvr32.exe «C:Program Files(86)1cv828.3.XX.XXXXbincomcntr.dll». Нажимаем ОК и, если все прошло корректно, то мы увидим сообщение об успешной регистрации библиотеки.

Создаем новое приложение СОМ+

Если библиотека зарегистрирована, но проблема остается, то кликаем ПКМ по кнопке «Пуск» (для ОС Windows 10) и вызываем «Панель управления». Затем входим в раздел «Система и безопасность», после чего переходим в «Администрирование». Появляется окно, в котором мы ищем строку «Службы компонентов» и открываем ее двойным щелчком ЛКМ. В новой консоли два раза кликаем ЛКМ по папке «Компьютер» и затем «Мой компьютер». Перед нами появляется список папок. ПКМ нажимаем на «Приложения СОМ+» и выбираем «Создать» → «Приложение».

Далее действуем следующим образом.

  1. В открывшемся Мастере нажимаем «Далее» и, когда в следующем окне нам предложат действие на выбор, кликаем «Создать новое приложение».
  2. В соответствующей строке присваиваем новому приложению имя, которое будет понятно не только нам, но и другим пользователям при дальнейшей работе, например 1CV8_ComConnect. Здесь же выбираем способ активации – «Серверное приложение».

Введите имя нового приложения 1CV8_ComConnect
Теперь проводим процедуру удостоверения. В поле «Указанный пользователь» при помощи функции «Обзор» ищем учетную запись, под которым будем запускать сервер 1С версии 8.3. (Для примера обозначим ее как User1CV83).

  • Пропускаем процедуры, предлагаемые в следующих окнах, и нажимаем кнопку «Готово». Мастер закрывается.
  • Возвращаемся в окно «Службы компонентов» и раскрываем ветку нашего только что созданного приложения. Разворачиваем узел «Роли», в которой кликаем на пункт CreatorOwner. ПКМ щелкаем по строке «Пользователи» и создаем нового пользователя. Снова выбираем ту учетную запись, под которой будет запускаться сервер 1С (это та самая User1CV83, о которой шла речь выше).
  • Переходим в ветку приложения 1CV8_ComConnect и кликаем ПКМ на узел «Компоненты». Создаем новый компонент.
  • В открывшемся Мастере делаем выбор пункта «Установка новых компонентов» и, когда появляется следующее окно, определяем нужную нам библиотеку dll (она находится по пути C:Program Files (x86)1cv81bin). Завершаем работу Мастера.
  • У нас появился компонент 1CV81.ComConnect.1. Кликаем по нему ПКМ и открываем пункт «Свойства». Во вкладке «Безопасность» находим перечень «Явно установленные для выделенных объектов роли» и ставим флажок напротив CreatorOwner.
  • Мы рассмотрели соединение с базой из программы 1С:Предприятие версии 8.3. Если планируется устанавливать коннект с БД 8.1 из версии 1С 8.2, то нужно добавить нового пользователя. Переходим по пути 1CV8_ComConnect → Роли → CreatorOwner → Пользователи и добавляем новую учетную запись User1CV82, под которой будет производиться запуск сервера 1С версии 8.2.

    Источник

    Vba run time error 2147221164 80040154 класс не зарегистрирован

    Лучший отвечающий

    Вопрос

    This code has been running for several years. This morning it did not. The VBA code is as follows:

    Private Sub Form_Open(Cancel As Integer)
    Set rstblBankComposite = New ADODB.Recordset
    With rstblBankComposite
    .Open _
    «SELECT [As-Of Date] AS MaxDate » & _
    «FROM tblBankComposite » & _
    «ORDER BY [As-Of Date] DESC», _
    CurrentProject.Connection

    The error number and message is: Run-time error ‘-2147221164 (80040154):’ ‘Class not registered’

    When I place the cursor on «CurrentProject.Connection», I get «CurrentProject.Connection = «

    My Windows environment is Windows 7 Professional SP 1 32 Bit, Version 6.1.7601 Service Pac 1 Build 7601.

    My Access environment is Access 2013 (15.0.4420.1017) MSO (15.0.4535.1002) 32 bit.

    My application code is in one Acess file and the data is linked in a separate Access file. From the application code file I can expand the Navigation bar, select Tables, click on the file and view the table tblBankComposite. I can run a report in the application file and it pulls data from the data Access file.

    Источник

    Vba run time error 2147221164 80040154 класс не зарегистрирован

    Ошибка 2147221164 0x80040154

    Всем привет, сегодня рассмотрим, вопрос из за чего происходит ошибка 2147221164 0x80040154 в 1С и как ее решать. И так немного теории 🙂 , когда информационные базы данных, обмениваются между собой информацией, то они задействуют COM-соединение. И так начинается попытка соединения из конфигурации 8.3 с конфигурацией 8.1, в итоге может выскочить При попытке соединения с COM-сервером произошла следующая ошибка:

    Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Класс не зарегистрирован”. Смотрим как решить.

    Вот более детально как выглядит ошибка 2147221164

    Ошибка 2147221164 0x80040154 в 1С

    Ошибка 2147221164 0x80040154 появляется, исключительно на сервере с базой данных, если выполнить соединение локально, все будет ок. На сервере 1С установлены версии 8.1 (x86), 8.2 (x64), 8.3 (x64). Источник проблем в версии 64 битной, так как ей требуется обратиться к 32-х библиотеке comcntr.dll, а на прямую это не реально, что ведет к использованию 64-х битного COM+, который умеет работать с 32-х библиотеками.

    Исправляем 2147221164

    На сервере 1С выполняем следующие действия.

    1. Для исправления 2147221164 о ткрываем консоль «Службы компонентов» (Панель управления -> Администрирование -> Службы компонентов).
    2. В этой консоли открываем Службы компонентов -> Компьютеры -> Мой компьютер. Правый клик по пункту“Приложения COM+”, Создать -> Приложение.
    3. Далее. В окне «Установка или создание нового приложения» выбираем «Создать новое приложение».
    4. Вводим понятное имя для нового приложения, например, “V8_ComConnector”, способ активации — «Серверное приложение».
    5. В качестве учетной записи для запуска приложения выбираем “Указанный пользователь” и через кнопку “Обзор” находим учетку, под которой запускается сервер 1С v 8.3. У нас это локальная учетная запись с именем “USR1CV8”. Следующие 2 экрана можно пропустить (Далее, Далее, Готово) или сделать следующий пункт на втором из них. Мы пропускаем.
    6. В ветке только что созданного приложения открываем узел «Роли» и в нём роль «CreatorOwner». Правый клик по пункту «Пользователи», Создать -> Пользователь. Здесь выбираем учетку, под которой запускается сервер 1С v 8.3. У нас это локальная учетная запись с именем “USR1CV8”.
    7. В ветке созданного приложения (“V8_ComConnector”) переходим на узел «Компоненты». Правый клик, Создать -> Компонент. Далее.
    8. Выбираем «Установка новых компонентов», и в появившемся окне выбираем нужную DLL-ку (C:Program Files (x86)1cv81bincomcntr.dll). Завершаем создание компонента.
    9. Открываем свойства только что созданного компонента (V81.COMConnector.1), переходим на вкладку «Безопасность», в списке «Явно установленные для выделенных объектов роли» устанавливаем флажок напротив роли “CreatorOwner”.

    Все косяка 2147221164 должно уже не быть. Если соединение с базой 8.1 устанавливается из версии 8.2, то нужно в раздел “V8_ComConnector -> Роли -> CreatorOwner -> Пользователи” добавить и пользователя, от имени которого запускается сервер 1С 8.2 (у нас это “USR1CV82”). Как видите, порядок действий не такой сложный и долгий и решает ошибку 2147221164, буквально минут за 15.

    Источник

    2147221164 (0x80040154): Класс не зарегистрирован — что делать?

    В программном обеспечении 1С, как и в любом другом, иногда возникают ошибки. Это не дает софту нормально функционировать и может затормозить работу целой организации. Поэтому нужно знать, как справляться с различными сбоями. В частности, сегодня мы разберем, из-за чего возникает ошибка «2147221164 (0x80040154): Класс не зарегистрирован», и что нужно сделать, чтобы ее исправить.

    Когда появляется ошибка 2147221164?

    Рассматриваемая ошибка появляется из-за конфликта версий 1С, которые в данный момент устанавливают между собой соединение. Разберем подробнее. Информационные БД 1С производят обмен данных при помощи СОМ-соединения. И, если, например, платформа 1С:Предприятие конфигурации 8.3 пытается установить связь с 1С версии 8.1, то на этом этапе при попытке подключения к СОМ-серверу и выскакивает данная ошибка.

    Для начала определим, что у сервера 1С есть несколько версий:

    1. 32-битная 8.1 (х86).
    2. 64-битные 8.2 и 8.3 (х64).

    Неполадки появляются на самом сервере с БД. Корень проблемы в том, что версии 1С архитектуры х64 не могут напрямую обратиться к 32-битной библиотеке comcntr.dll. В этом случае соединение происходит при помощи приложений СОМ+, способных взаимодействовать с библиотеками х86.

    Справляемся с проблемой

    Заканчиваем с теорией и переходим к практике – пробуем исправить ошибку «2147221164 (0x80040154): Класс не зарегистрирован».

    Регистрируем библиотеку comcntr.dll

    Ошибка может проявиться, если не зарегистрирована библиотека comcntr.dll. Решаем ее следующим образом. Вызываем строку «Выполнить» (кликнув ПКМ по кнопке «Пуск») и вводим regsvr32.exe «C:Program Files(86)1cv828.3.XX.XXXXbincomcntr.dll». Нажимаем ОК и, если все прошло корректно, то мы увидим сообщение об успешной регистрации библиотеки.

    Создаем новое приложение СОМ+

    Если библиотека зарегистрирована, но проблема остается, то кликаем ПКМ по кнопке «Пуск» (для ОС Windows 10) и вызываем «Панель управления». Затем входим в раздел «Система и безопасность», после чего переходим в «Администрирование». Появляется окно, в котором мы ищем строку «Службы компонентов» и открываем ее двойным щелчком ЛКМ. В новой консоли два раза кликаем ЛКМ по папке «Компьютер» и затем «Мой компьютер». Перед нами появляется список папок. ПКМ нажимаем на «Приложения СОМ+» и выбираем «Создать» → «Приложение».

    Далее действуем следующим образом.

    1. В открывшемся Мастере нажимаем «Далее» и, когда в следующем окне нам предложат действие на выбор, кликаем «Создать новое приложение».
    2. В соответствующей строке присваиваем новому приложению имя, которое будет понятно не только нам, но и другим пользователям при дальнейшей работе, например 1CV8_ComConnect. Здесь же выбираем способ активации – «Серверное приложение».

    Введите имя нового приложения 1CV8_ComConnect
    Теперь проводим процедуру удостоверения. В поле «Указанный пользователь» при помощи функции «Обзор» ищем учетную запись, под которым будем запускать сервер 1С версии 8.3. (Для примера обозначим ее как User1CV83).

  • Пропускаем процедуры, предлагаемые в следующих окнах, и нажимаем кнопку «Готово». Мастер закрывается.
  • Возвращаемся в окно «Службы компонентов» и раскрываем ветку нашего только что созданного приложения. Разворачиваем узел «Роли», в которой кликаем на пункт CreatorOwner. ПКМ щелкаем по строке «Пользователи» и создаем нового пользователя. Снова выбираем ту учетную запись, под которой будет запускаться сервер 1С (это та самая User1CV83, о которой шла речь выше).
  • Переходим в ветку приложения 1CV8_ComConnect и кликаем ПКМ на узел «Компоненты». Создаем новый компонент.
  • В открывшемся Мастере делаем выбор пункта «Установка новых компонентов» и, когда появляется следующее окно, определяем нужную нам библиотеку dll (она находится по пути C:Program Files (x86)1cv81bin). Завершаем работу Мастера.
  • У нас появился компонент 1CV81.ComConnect.1. Кликаем по нему ПКМ и открываем пункт «Свойства». Во вкладке «Безопасность» находим перечень «Явно установленные для выделенных объектов роли» и ставим флажок напротив CreatorOwner.
  • Мы рассмотрели соединение с базой из программы 1С:Предприятие версии 8.3. Если планируется устанавливать коннект с БД 8.1 из версии 1С 8.2, то нужно добавить нового пользователя. Переходим по пути 1CV8_ComConnect → Роли → CreatorOwner → Пользователи и добавляем новую учетную запись User1CV82, под которой будет производиться запуск сервера 1С версии 8.2.

    Источник

    В программном обеспечении 1С, как и в любом другом, иногда возникают ошибки. Это не дает софту нормально функционировать и может затормозить работу целой организации. Поэтому нужно знать, как справляться с различными сбоями. В частности, сегодня мы разберем, из-за чего возникает ошибка «2147221164 (0x80040154): Класс не зарегистрирован», и что нужно сделать, чтобы ее исправить.

    Скриншот ошибки

    Содержание

    1. Когда появляется ошибка 2147221164?
    2. Справляемся с проблемой
    3. Регистрируем библиотеку comcntr.dll
    4. Создаем новое приложение СОМ+

    Когда появляется ошибка 2147221164?

    Рассматриваемая ошибка появляется из-за конфликта версий 1С, которые в данный момент устанавливают между собой соединение. Разберем подробнее. Информационные БД 1С производят обмен данных при помощи СОМ-соединения. И, если, например, платформа 1С:Предприятие конфигурации 8.3 пытается установить связь с 1С версии 8.1, то на этом этапе при попытке подключения к СОМ-серверу и выскакивает данная ошибка.

    Для начала определим, что у сервера 1С есть несколько версий:

    1. 32-битная 8.1 (х86).
    2. 64-битные 8.2 и 8.3 (х64).

    Неполадки появляются на самом сервере с БД. Корень проблемы в том, что версии 1С архитектуры х64 не могут напрямую обратиться к 32-битной библиотеке comcntr.dll. В этом случае соединение происходит при помощи приложений СОМ+, способных взаимодействовать с библиотеками х86.

    Читайте также: Неверный формат хранилища данных 1C 8.3 как исправить.

    Справляемся с проблемой

    Заканчиваем с теорией и переходим к практике – пробуем исправить ошибку «2147221164 (0x80040154): Класс не зарегистрирован».

    Регистрируем библиотеку comcntr.dll

    Ошибка может проявиться, если не зарегистрирована библиотека comcntr.dll. Решаем ее следующим образом. Вызываем строку «Выполнить» (кликнув ПКМ по кнопке «Пуск») и вводим regsvr32.exe «C:Program Files(86)1cv828.3.XX.XXXXbincomcntr.dll». Нажимаем ОК и, если все прошло корректно, то мы увидим сообщение об успешной регистрации библиотеки.

    Создаем новое приложение СОМ+

    Если библиотека зарегистрирована, но проблема остается, то кликаем ПКМ по кнопке «Пуск» (для ОС Windows 10) и вызываем «Панель управления». Затем входим в раздел «Система и безопасность», после чего переходим в «Администрирование». Появляется окно, в котором мы ищем строку «Службы компонентов» и открываем ее двойным щелчком ЛКМ. В новой консоли два раза кликаем ЛКМ по папке «Компьютер» и затем «Мой компьютер». Перед нами появляется список папок. ПКМ нажимаем на «Приложения СОМ+» и выбираем «Создать»«Приложение».

    Консоль

    Далее действуем следующим образом.

    1. В открывшемся Мастере нажимаем «Далее» и, когда в следующем окне нам предложат действие на выбор, кликаем «Создать новое приложение».
    2. В соответствующей строке присваиваем новому приложению имя, которое будет понятно не только нам, но и другим пользователям при дальнейшей работе, например 1CV8_ComConnect. Здесь же выбираем способ активации – «Серверное приложение». Окно мастера установки приложений Com+
      Введите имя нового приложения 1CV8_ComConnect
    3. Теперь проводим процедуру удостоверения. В поле «Указанный пользователь» при помощи функции «Обзор» ищем учетную запись, под которым будем запускать сервер 1С версии 8.3. (Для примера обозначим ее как User1CV83).Скрин мастера установки приложений Com+Окно выбора учетной записи
    4. Пропускаем процедуры, предлагаемые в следующих окнах, и нажимаем кнопку «Готово». Мастер закрывается.
    5. Возвращаемся в окно «Службы компонентов» и раскрываем ветку нашего только что созданного приложения. Разворачиваем узел «Роли», в которой кликаем на пункт CreatorOwner. ПКМ щелкаем по строке «Пользователи» и создаем нового пользователя. Снова выбираем ту учетную запись, под которой будет запускаться сервер 1С (это та самая User1CV83, о которой шла речь выше).
    6. Переходим в ветку приложения 1CV8_ComConnect и кликаем ПКМ на узел «Компоненты». Создаем новый компонент.
    7. В открывшемся Мастере делаем выбор пункта «Установка новых компонентов» и, когда появляется следующее окно, определяем нужную нам библиотеку dll (она находится по пути C:Program Files (x86)1cv81bin). Завершаем работу Мастера.
    8. У нас появился компонент 1CV81.ComConnect.1. Кликаем по нему ПКМ и открываем пункт «Свойства».  Во вкладке «Безопасность» находим перечень «Явно установленные для выделенных объектов роли» и ставим флажок напротив CreatorOwner.

    Может быть вам полезно: Обнаружено нарушение целостности системы в 1C что делать.

    Мы рассмотрели соединение с базой из программы 1С:Предприятие версии 8.3. Если планируется устанавливать коннект с БД 8.1 из версии 1С 8.2, то нужно добавить нового пользователя. Переходим по пути 1CV8_ComConnect Роли CreatorOwner Пользователи и добавляем новую учетную запись User1CV82, под которой будет производиться запуск сервера 1С версии 8.2.

    Если спокойно и внимательно следовать алгоритму, то исправление ошибки на деле окажется простым и быстрым. Благодаря вышеописанным действиям программа 1С версий 8.2 и 8.3 сможет обратиться за информацией к библиотеке comcntr.dll и ошибка «2147221164 (0x80040154): Класс не зарегистрирован» больше не возникнет.

    Опубликовано 20 августа 2018 Обновлено 03 октября 2020

    Joe4

    Joe4

    MrExcel MVP, Junior Admin


    • #3

    The code works fine on other computers.

    I was hoping the fix would just be referencing a new object library or something??

    That could possibly be an issue.

    Go to a computer that the code does work on, and open up the VB Editor, and from the Tools menu, select References.
    Note all the references that are checked/selected.
    Now go to the computer in which it is not working, and do the same thing, and check the References.
    Are all the same references checked? If not, find it in the list and check it. Note that sometimes the version number might be a little different (if the computers are not on the same operating system and version).

    • #4

    Joe4,

    I was able to compare the two computer’s stats today:

    On the Computer that the file works on the information is as follows:

    OS:Windows 7 Professional Service Pack 1, 64 Bit
    Version of Excel:2010

    References:
    Visual Basic For Applications
    Microsoft Excel 14.0 Object Library
    OLE Automation
    Microsoft Office Object Library 14.0
    Microsoft Forms 2.0 Object Library

    For the Computer that the file does not work on the information is as follows:

    OS:Windows 7 Professional Service Pack 1, 64 Bit
    Version of Excel:2013

    References:
    Visual Basic For Applications
    Microsoft Excel 15.0 Object Library
    OLE Automation
    Microsoft Office Object Library 15.0
    Microsoft Forms 2.0 Object Library

    I am still unsure of why the file doesn’t work properly? Is it a possibility that the updated Object Libraries or Newer Version of Excel could be an issue or could there be DLL files missing?

    Here is a little bit more of the code if it will help any:

    Code:

    [COLOR=#0000ff]Private Sub[/COLOR] CreateDatabaseAndTable()
    
    
      [COLOR=#0000ff]  Dim [/COLOR]dbConnectStr            [COLOR=#0000ff]As String[/COLOR]
        [COLOR=#0000ff]Dim [/COLOR]Catalog                 [COLOR=#0000ff]As[/COLOR] [COLOR=#0000ff]Object
    [/COLOR]    [COLOR=#0000ff]Dim [/COLOR]cnt                    [COLOR=#0000ff] As[/COLOR][COLOR=#0000ff] Object[/COLOR]
      [COLOR=#0000ff]  Dim [/COLOR]dbPath                  [COLOR=#0000ff]As String[/COLOR]
      [COLOR=#0000ff]  Dim [/COLOR]strSql                 [COLOR=#0000ff] As String[/COLOR]
    
    [COLOR=#008000]'Author       : Lalit Mohan[/COLOR]
    [COLOR=#008000]'Macro Purpose: Create an Access database on the fly[/COLOR]
    
    [COLOR=#008000]    'Set database name here[/COLOR]
        dbPath = GetDBPath & strDBName
    [COLOR=#0000ff]    On Error Resume Next[/COLOR]
        [COLOR=#0000ff]Call[/COLOR] SetAttr(dbPath, vbNormal)
        [COLOR=#0000ff]Call[/COLOR] Kill(dbPath)
        On Error GoTo 0: Err.Clear
        dbConnectStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ";"
    
    
    [COLOR=#008000]    'Create new database[/COLOR]
      [COLOR=#0000ff]  Set[/COLOR] Catalog = CreateObject("ADOX.Catalog")
        Catalog.Create dbConnectStr
       [COLOR=#0000ff] Set[/COLOR] Catalog = [COLOR=#0000ff]Nothing[/COLOR]
        [COLOR=#0000ff]Call [/COLOR]SetAttr(dbPath, vbNormalNoFocus)

    Last edited: Jul 30, 2014

    • #5

    Hi Mickle,

    As mentioned in this website:- Database Programming

    Try to change this line

    Rich (BB code):

    dbConnectStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ";"

    to this one

    Rich (BB code):

    dbConnectStr = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & dbPath & ";"

    • #7

    mohan.pandey87,

    Thank you for getting me on the right path. The website you mentioned had a few different articles on this same issue. I tried several solutions from the website you referenced and was still unsuccessful. However, with this new line of thought I did a little more research on the subject matter and was fortunate enough to come across this website: How to use ADOX to create an existing Access database

    Here are the different replacement code lines I tried before coming to the solution. (Green commented lines did not work. The blue line seemed to resolve my issues.)

    Code:

    [COLOR=#0000ff][B]dbConnectStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & ";"[/B][/COLOR]
         
    [COLOR=#008000]    'dbConnectStr = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & dbPath & ";"[/COLOR]
    [COLOR=#008000]    'dbConnectStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ";"[/COLOR]
    [COLOR=#008000]    'dbConnectStr = "Provider=Microsoft.Jet OLEDB:Engine Type=4;Data Source=" & dbPath & ";"[/COLOR]
    [COLOR=#008000]    'dbConnectStr = "Provider=Microsoft.Jet OLEDB;Engine Type=4;Data Source=" & dbPath & ";"[/COLOR]

    Is there any particular reason why this line of code works on my company’s computers and the original line would not?

    As always I appreciate your help! You are a real lifesaver.

    Last edited: Aug 4, 2014

    • #8

    May be in Office 2013 microsoft only support Microsoft.ACE.OLEDB.12.0.

    • #9

    mohan.pandey87,

    Thanks for the insight. I’ll have to keep this in mind in the future. I appreciate all your help.

    Обновлено 13.02.2016

    Ошибка 2147221164 0x80040154 в 1С

    Ошибка 2147221164 0x80040154

    Всем привет, сегодня рассмотрим, вопрос из за чего происходит ошибка 2147221164 0x80040154 в 1С и как ее решать. И так немного теории 🙂 , когда информационные базы данных, обмениваются между собой информацией, то они задействуют COM-соединение. И так начинается попытка соединения из конфигурации 8.3 с конфигурацией 8.1, в итоге может выскочить При попытке соединения с COM-сервером произошла следующая ошибка:

    Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Класс не зарегистрирован”. Смотрим как решить.

    Вот более детально как выглядит ошибка 2147221164

    Ошибка 2147221164-2

    Ошибка 2147221164 0x80040154 в 1С

    Ошибка 2147221164 0x80040154 появляется, исключительно на сервере с базой данных, если выполнить соединение локально, все будет ок. На сервере 1С установлены версии 8.1 (x86), 8.2 (x64), 8.3 (x64). Источник проблем в версии 64 битной, так как ей требуется обратиться к  32-х библиотеке comcntr.dll, а на прямую это не реально, что ведет к использованию 64-х битного COM+, который умеет работать с 32-х библиотеками.

    Исправляем 2147221164

    На сервере 1С выполняем следующие действия.

    1. Для исправления 2147221164 открываем консоль «Службы компонентов» (Панель управления -> Администрирование -> Службы компонентов).
    2. В этой консоли открываем Службы компонентов -> Компьютеры -> Мой компьютер. Правый клик по пункту“Приложения COM+”, Создать -> Приложение.
    3. Далее. В окне «Установка или создание нового приложения» выбираем «Создать новое приложение».
    4. Вводим понятное имя для нового приложения, например, “V8_ComConnector”, способ активации — «Серверное приложение».
    5. В качестве учетной записи для запуска приложения выбираем “Указанный пользователь” и через кнопку “Обзор” находим учетку, под которой запускается сервер 1С v 8.3. У нас это локальная учетная запись с именем “USR1CV8”. Следующие 2 экрана можно пропустить (Далее, Далее, Готово) или сделать следующий пункт на втором из них. Мы пропускаем.
    6. В ветке только что созданного приложения открываем узел «Роли» и в нём роль «CreatorOwner». Правый клик по пункту «Пользователи», Создать -> Пользователь. Здесь выбираем учетку, под которой запускается сервер 1С v 8.3. У нас это локальная учетная запись с именем “USR1CV8”.
    7. В ветке созданного приложения (“V8_ComConnector”) переходим на узел «Компоненты». Правый клик, Создать -> Компонент. Далее.
    8. Выбираем «Установка новых компонентов», и в появившемся окне выбираем нужную DLL-ку (C:Program Files (x86)1cv81bincomcntr.dll). Завершаем создание компонента.
    9. Открываем свойства только что созданного компонента (V81.COMConnector.1), переходим на вкладку «Безопасность», в списке «Явно установленные для выделенных объектов роли» устанавливаем флажок напротив роли “CreatorOwner”.

    Все косяка 2147221164 должно уже не быть. Если соединение с базой 8.1 устанавливается из версии 8.2, то нужно в раздел “V8_ComConnector -> Роли -> CreatorOwner -> Пользователи” добавить и пользователя, от имени которого запускается сервер 1С 8.2 (у нас это “USR1CV82”). Как видите, порядок действий не такой сложный и долгий и решает ошибку 2147221164, буквально минут за 15.

    Фев 13, 2016 20:19

     

    Vlad B

    Пользователь

    Сообщений: 13
    Регистрация: 15.09.2020

    #1

    15.09.2020 22:34:40

    Зарегистрировал в Windows,  В VBProject.References есть и имя и гуид. Однако:

    Код
    Set wsTCP = CreateObject("OSWINSCK.Winsock")
    

    выдает ошибку  -2147221164 (80040154) Класс не зарегистрирован.

    Что не так ?

     

    Андрей VG

    Пользователь

    Сообщений: 11878
    Регистрация: 22.12.2012

    Excel 2016, 365

    #2

    15.09.2020 22:53:31

    Доброе время суток

    Цитата
    Vlad B написал:
    Что не так ?

    Может это

    3. run «regsvr32 OSWINSCK.dll» from command-line

    ?

     

    Vlad B

    Пользователь

    Сообщений: 13
    Регистрация: 15.09.2020

    #3

    16.09.2020 10:46:24

    Цитата
    Андрей VG написал:
    Может это  3. run «regsvr32 OSWINSCK.dll» from command-line ?

    Это было выполнено из под админа без ошибок — собственно, моя ошибка уже после регистрации в Windows

     

    bedvit

    Пользователь

    Сообщений: 2477
    Регистрация: 02.04.2015

    Виталий

    Попробуйте через ранее связывание. Вы же подключили в References?

    «Бритва Оккама» или «Принцип Калашникова»?

     

    Vlad B

    Пользователь

    Сообщений: 13
    Регистрация: 15.09.2020

    #5

    16.09.2020 12:19:02

    Цитата
    bedvit написал:
    Попробуйте через ранее связывание. Вы же подключили в References?

    В референсез подключено, а что значит ранее связывание ?

     

    bedvit

    Пользователь

    Сообщений: 2477
    Регистрация: 02.04.2015

    Виталий

    через NEW, плюс в проводнике по объектам (F2), можно посмотреть по этой библе методы и свойства (если она поддерживает DUAL — интерфейс, т.е. раннее и позднее связывание).

    «Бритва Оккама» или «Принцип Калашникова»?

     

    Vlad B

    Пользователь

    Сообщений: 13
    Регистрация: 15.09.2020

    #7

    16.09.2020 13:14:19

    Цитата
    bedvit написал:
    через NEW, плюс в проводнике по объектам (F2), можно посмотреть по этой библе методы и свойства (если она поддерживает DUAL — интерфейс, т.е. раннее и позднее связывание).

    По F2 библиотека находится и в свойствах у нее есть и нужные TCP и Winsock,
    при вводе всплывают подсказки, строка:

    Код
    Dim os_tmp As OSWINSCK.Winsock

    выполняется в os_tmp значение nothing тип Winsock, а следующее две строки- ошибка в любой- «Класс не зарегистрирован»:

    Код
    Set os_TCP = New OSWINSCK.TCP
    
    Код
    Set os_WS = CreateObject("OSWINSCK.Winsock")
     

    Битность ОС какая? Некоторые библиотеки просто не работают под Win-64. Как не регистрируй — классы просто не «усваиваются», хоть и видны по F2.

    Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

     

    Vlad B

    Пользователь

    Сообщений: 13
    Регистрация: 15.09.2020

    #9

    16.09.2020 13:38:05

    Цитата
    Дмитрий(The_Prist) Щербаков написал:
    Битность ОС какая? Некоторые библиотеки просто не работают под Win-64. Как не регистрируй — классы просто не «усваиваются», хоть и видны по F2.

    Windows 10 64bit, Office 2019, а библиотека OSWINSCK.dll — 32 бита. Неужели нет вариантов ?

     

    sokol92

    Пользователь

    Сообщений: 4429
    Регистрация: 10.09.2017

    Укажите разрядность офиса (Файл/Учетная запись/О программе Excel)

     

    Vlad B

    Пользователь

    Сообщений: 13
    Регистрация: 15.09.2020

    #11

    16.09.2020 14:35:23

    Цитата
    sokol92 написал:
    Укажите разрядность офиса (Файл/Учетная запись/О программе Excel)

    64 бит, как и Винда…

     

    sokol92

    Пользователь

    Сообщений: 4429
    Регистрация: 10.09.2017

    #12

    16.09.2020 15:54:41

    Три варианта действий:

    • установить 32-разрядный офис
    • поискать 64-разрядную библиотеку OSWINSCK.dll (если она вообще существует)
    • попытаться обойтись без OSWINSCK.dll (достаточно старая библиотека, наверняка, есть другие пути к цели)

    Владимир

    Понравилась статья? Поделить с друзьями:
  • Microsoft visual basic for applications compile error the code in this
  • Microsoft visual basic for applications compile error in hidden module excel
  • Microsoft visual basic error run time error 1004
  • Microsoft visual c runtime library runtime error что это
  • Microsoft visual basic compile error can t find project or library