«Библиотека объектов недействительна или содержит ссылки ...» в Excel VBA с DatePicker - PullRequest
3 голосов
/ 21 декабря 2010

Я некоторое время работал над книгой Excel с большим количеством кода VBA, и теперь я отправил этот файл некоторым коллегам для тестирования, и он НЕ работает на их компьютере. Мы все работаем в одной компании и имеем Windows XP SP2 с Office 2003.

Рабочая книга имеет форму, которая открывается при нажатии на фигуру, и содержит некоторые элементы управления. Когда они щелкают по форме для отображения формы, появляется следующая ошибка:

"Библиотека объектов недействительна или содержит ссылки на определения объектов, которые не может быть найден "

В форме есть DatePicker, и я думаю, что здесь кроется проблема. Если я удаляю datePicker из формы и отправляю им файл снова, они не получают это сообщение об ошибке.

Я уже попытался удалить файл mscomct2.exd, как упоминалось на этих двух сайтах " Microsoft " и " lessanvaezi ", но ошибка все еще появляется. Я проверил, и новый файл .exd был создан.

Немного Дополнительная информация:

  1. Я проверяю их систему, и у них действительно есть файл mscomct2.ocx в правильном месте (c: \ Winxp \ System32).
  2. Если я открою пустой файл Excel, зайдите в редактор VBA, перейдите в Инструменты-> Справка, я НЕ вижу опции для регистрации «Microsoft Common Control-2 6.0 (SP6)» (mscomct2.ocx). Вместо этого я вижу «Microsoft Windows Common Controls Satellite-3 6.2)» (cmct3de.dll).
  3. Я отправляю моему коллеге файл с указателем даты, но без ссылки на «Microsoft Common Control-2 6.0 (SP6)». Прежде чем щелкнуть форму и открыть форму, я попытался динамически ссылаться на библиотеку MSCOMCT2.ocx с помощью следующего кода. Он ссылался на «Microsoft Common Control-2 6.0 (SP6)», но ошибка все еще появляется.

Sub RegisterCtl ()

'MSComCt2.ocx
strGUID = "{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}"
ThisWorkbook.VBProject.References.AddFromGuid guid:=strGUID, Major:=1, Minor:=0

end Sub

  1. Если я затем перейду к форме в редакторе VBE и щелкните правой кнопкой мыши на панель инструментов, а затем перейдите к Дополнительные элементы управления для добавления «Microsoft Date and TimePicker» контроль, я вижу эту опцию в списке Два раза. К сожалению, безотносительно из которых я выбираю, поведение то же самое: символ DatePicker добавляется в панель инструментов, но когда я перетащите элемент управления в форму, MSGBox всплывает, говоря, что контроль был недоступен.

Кто-нибудь знает, что не так? Что я могу сделать, чтобы он работал на их компьютере?

Я ценю любую помощь.

Edit:

Компьютер с этой проблемой был обновлен, поэтому я не смогу найти конкретное решение для моего случая. Я выбираю решение Archers, так как оно помогло большинству людей (Most Upvotes).

Ответы [ 8 ]

11 голосов
/ 20 января 2011

У меня тоже такая же проблема.http://support.microsoft.com/kb/957924/en-us удалите все файлы .exd, чтобы моя программа работала!

Войдите в командную строку и введите следующие команды DOS:

Код:

CD \ Documents and Settings

DEL / S / A: H / A: -H * .EXD

3 голосов
/ 04 января 2011

У меня была эта проблема. Я не могу вспомнить причину, но в вашей пользовательской форме, где у вас есть средство выбора даты / времени, поместите это в userform_initialize. Код просто добавляет текстовое поле, если у них нет правильной ссылки. Я знаю, что это не ЛУЧШЕЕ решение, но это обходной путь. Я не смог запустить regsvr32 на любых машинах из-за наших системных администраторов.

Dim dtP As Object
Dim hasDtPicker As Boolean
On Error Resume Next
Set dtP = frmSearch.Frame24.Controls.Add("MSComCtl2.DTPicker", "DTPicker1", True)
If Err.Number <> 0 Or dtP Is Nothing Then
     hasDtPicker = False
     'change "frmsearch.Frame24" to the area where you want the date and time picker to be.
     Set dtP = frmSearch.Frame24.Controls.Add("Forms.TextBox.1", "DTPicker1", True)
     dtP.Text = [todays_date].Value
Else
     hasDtPicker = True
End If
'
' formatting properties for both TextBox and DTPicker
'
With dtP
     .Width = 67.5
     .height = 18
     .Left = lblNextActionDate.Left
     .Top = lblNextActionDate.Top + lblNextActionDate.height + 5
End With
2 голосов
/ 16 августа 2011

У меня недавно была похожая проблема. Примерно через два дня загрузили новый файл mscomct2.ocx: http://support.microsoft.com/kb/297381 незарегистрированный предыдущий, вручную удалил странный ключ MRU с "mscomct2" в одном из полей (только на всякий случай), зарегистрировал новый (используя меню Access ActiveX) И все элементы управления из mscomct2.ocx перечислены только один раз с тех пор!

Но, к сожалению, это не удалило сообщения об ошибках. Однако после двойного последовательного импорта в новый контейнер: original_file.mdb -> db1.mdb -> db2.mdb сообщения об ошибках больше не появляются (в файле db2.mdb). Но они все еще были видны во время trnasfer между original_file.mdb и db1.mdb.

2 голосов
/ 21 декабря 2010

Я думаю, что # 2 является корнем проблемы.Если вы сможете заставить mscomct2.ocx отображаться в Инструменте - Ссылки на новую книгу, это, вероятно, решит остальные ваши проблемы.Вы пытались зарегистрировать OCX?Пуск - Выполнить - cmd, чтобы открыть окно DOS.Перейдите в папку system32.Введите

regsvr32 mscomct2.ocx

Я думаю, что это поместит ocx в поле Tools - References и, надеюсь, это исправит это.Вот ссылка для включения ocx в Windows 7

http://www.dailydoseofexcel.com/archives/2010/05/28/calendar-control-dll-on-windows-7-64-bit/

Не ваша ситуация, но, возможно, полезно.Также см. Страницу MS на regsvr32

http://support.microsoft.com/kb/249873

1 голос
/ 19 марта 2015

Убедитесь, что поле (Имя) в элементе управления ActiveX DatePicker не увеличивается.У меня есть лист Excel с ComboBox, в котором имя меняется каждый раз, когда я открываю, и там, где на него ссылаются в коде, он выдает ту же ошибку.

Я ссылаюсь на ComboBox1, но странно, что теперь это ComboBox17.

1 голос
/ 23 октября 2013

Просто отмените регистрацию MSCOMCTL.OCX и зарегистрируйте его.

**32-bit OS** C:\Windows\System32\MSCOMCTL.OCX

**64-Bit OS** C:\Windows\SySWOW64\MSCOMCTL.OCX
1 голос
/ 18 марта 2013

Попробуйте удалить здесь надстройки при запуске (ум версия Office):

C:\Program Files\Microsoft Office\OFFICE12\XLSTART\
1 голос
/ 21 января 2013

У меня такая же проблема с файлом, который я отправил в другую группу. У меня есть выбор даты в пользовательской форме, и файл отлично работает с Excel (2007 и 2010), за исключением машин в этой группе. Сообщение об ошибке совпадает с исходным сообщением.

Ответ, по-видимому, следующий, как описал специалист службы поддержки, который его изучил:

Оказывается, файл MSCOMCT2.OCX отсутствовал на компьютере пользователя. Этот файл является Microsoft Windows Common Controls-2 6.0 (MSCOMCT2.OCX). Похоже, что этот элемент управления обеспечивает возможность в модели работать с палитрой дат.

Процесс исправления его компьютера был следующим:

  1. Скопируйте файл mscomct2.ocx в c: \ windows \ system32

  2. Зарегистрируйте файл ocx, выполнив следующую команду на своем компьютере. В командной строке введите regsvr32.exe c: \ windows \ system32 \ mscomct2.ocx и нажмите клавишу ВВОД.


Эта инструкция может относиться к компьютерам группы, но идентификация mscomct2.ocx как виновника является началом. У меня нет конкретных рекомендаций относительно того, где взять этот файл, за исключением того, что он, кажется, доступен в Интернете.

...