Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > ActiveX component can't create object


Автор: Li 11.11.2002, 22:10
у меня макрос под ехсеl2000.
нужно считать данные из файла в переменную построчно.
я делаю это следующим образом

Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile("list.txt")
      s = a.ReadLine

Однако при переносе на другую машину, точно такой же компьютер с той же ОС и версией офиса, на строчке
Set fs = CreateObject("Scripting.FileSystemObject")
появляется ошибка
"ActiveX component can't create object"
из хелпа понятно что что-то где-то не зарегистрировано, но  что и где?
у меня два вопроса
1. что нужно сделать, чтобы указанный код работал?
2. как можно считать данные из файла не прибегая к функции CreateObject?

Спасибо!

Автор: Vit 12.11.2002, 00:31
Вот этот объект и не зарегистрирован: "Scripting", найди доку откуда ты берёшь этот объект и используя regsrv32 зарегистрируй

Автор: nik0p0l 26.3.2007, 13:53
извините за поднятие старой темки , но ошибка точно такая же и думаю новую тему по этому создавать не стоит.
вот на этом выскакивает ошибочка из названия темы(в скрипте на VBScript):
Код

Set CDialog = CreateObject("MSComDlg.CommonDialog")

Делал:
Код

regsvr32 comdlg32.dll

не помогает, дословно ругается:
Код

dll  была загружена, но найти точку входа для DllRegisterServer не удалось. Зарегистрировать файл невозможно.

так же регистрировал ocx с ним все норм. 
на другой машине ошибочки нет smile что можно сделать для исправления без переустановки винды?
хотелось бы это как то решить, уж очень удобно. на других машинах скрипт как часы работает, а на моей рабочей ... :(

Автор: mihanik 28.3.2007, 07:57
nik0p0l!!!

Во-первых, в твоём случае нужна компонента не comdlg32.dll, а COMDLG32.OCX

Естественно, её нужно зарегить

Код

regsvr32 comdlg32.ocx


Но этого мало.

Нужно внести изменения в реестр.

Вот содержимое reg-файла, который это делает...

Код

REGEDIT4 
 
[HKEY_CLASSES_ROOT\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905] 
@="gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj" 
 
[HKEY_CLASSES_ROOT\Licenses\78E1BDD1-9941-11cf-9756-00AA00C00908] 
@="yjrjvqkjlqqjnqkjvprqsjnjvkuknjpjtoun" 


Добавлено через 4 минуты и 27 секунд
Li!!!

А тебе порекомендую использовать стандартные операторы бейсика.
Они работают везде.

Ну... Как-то так.

Код

Dim MyFileName as String
Dim DF as Long
Dim S as String

      DF = Freefile()
      MyFileName  = "полное имя файла"
      Open MyFileName For Input As DF

      Input #DF, S

      Close DF



Извини, проверить синтаксис не могу, пишу прямо в IE...
Но идея такова.

Автор: nik0p0l 29.3.2007, 11:04
Цитата(mihanik @ 28.3.2007,  07:57)
nik0p0l!!!

Во-первых, в твоём случае нужна компонента не comdlg32.dll, а COMDLG32.OCX

Естественно, её нужно зарегить

Код

regsvr32 comdlg32.ocx


Но этого мало.

Нужно внести изменения в реестр.

Вот содержимое reg-файла, который это делает...

Код

REGEDIT4 
 
[HKEY_CLASSES_ROOT\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905] 
@="gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj" 
 
[HKEY_CLASSES_ROOT\Licenses\78E1BDD1-9941-11cf-9756-00AA00C00908] 
@="yjrjvqkjlqqjnqkjvprqsjnjvkuknjpjtoun" 

Большое спасибо smile Помогло smile А где про такие "фичи" можно узнать/почитать? Поиск по гуглю даже близко не дал информации по ключам.. искал по словам регистрация, реестр, COMDLG32.OCX

Автор: mihanik 29.3.2007, 11:34
Цитата(nik0p0l @  29.3.2007,  11:04 Найти цитируемый пост)
 Поиск по гуглю даже близко не дал информации по ключам.. 


Будешь смеятся...
Искал в яндексе пару недель назад...
 smile 

Автор: nik0p0l 29.3.2007, 12:42
Цитата(mihanik @ 29.3.2007,  11:34)
Цитата(nik0p0l @  29.3.2007,  11:04 Найти цитируемый пост)
 Поиск по гуглю даже близко не дал информации по ключам.. 


Будешь смеятся...
Искал в яндексе пару недель назад...
 smile

мда smile спасиб еще раз smile

Автор: DrBoom 2.7.2007, 16:07
---

Извиняюсь за поднятие старой темы, проблема таже... Ошибка run-time '429': "ActiveX component can't create object" smile 

В основной программе:
Код

Sub Form_Load()
 Set pluginGLOBAL = GetObject("LM_Plugins.dll", "MainPlugin")  ' < - ошибка происходит на этом шаге!!!
 pluginGLOBAL.initPlugins
End Sub


В LM_Plugins.dll:
Код

Option Explicit

Public Sub initPlugins()
 ' что-то, например, MsgBox "Выполнено!"
End Sub


Я уже обкампилировался, обзарегистрировался моей dll-ки... всё равно 429  и нечего нового... что делать??? класс в dll-ке один, называется MainPlugin? Пробывал createObject вместо get - такая ж ... м... как бы сказть))) ерунда))) Помогите плзЪ!!! smile 

Автор: mihanik 4.7.2007, 20:54
Гы...
Начни новую тему и сформулируй подробно, что ты хочешь...

Опиши как можно подробнее!!!

Ты что строишь?
COM Add-Ins ?
А как?

Автор: parkovaya1 2.11.2009, 02:53
пришло время обновить тему )
появляется все та же ошибка все там же:
Код
Set AcadApp = CreateObject("AutoCAD.Application.17")

но насколько я понимаю объект AutoCAD.Application.17 (C:\Program Files (x86)\Common Files\Autodesk Shared\acax17enu.tlb) зарегистрирован
иначе он бы не отображался в окне Available References в VB6.
В Task Manager видно как загружается процесс acad.exe, после чего следует пауза и затем код vb выдает ошибку ActiveX component can't create object,
а процесс acad.exe выгружается из памяти

подскажите, в чем может быть причина?

Автор: Akina 2.11.2009, 09:16
Претензии - к Автокаду

Автор: LittleJohney 8.1.2010, 18:02
Добрый день! 
Cоздаётся объект 
Set objCrFactory = CreateObject("CrystalReports.ObjectFactory.2")
Получаю всё ту же ошибку "Activex can't create object". 
Нашёл нужную objectfactory.dll,  зарегистрировал regsvr32 , но результат не изменился.
Подскажите пожалуйста, что может быть не так.

Автор: LittleJohney 11.1.2010, 14:32
Вопрос решён.
Жаль что так много времени потрачено на регистрации длл и проверку корректности их зависимостей - в моём случае оказалось пустой тратой времени. Решение оказалось в принципе очевидным, я пока не разобрался в тонкостях, но помогла установка Crystal Reports 9.
В процессе установки кроме копирования файлов и всего остального  регистрировались модули (dll), их скорее всего мне и недоставало. То что было на моём диске до этого - оказалось каким то недобросовестным копипастом на который я и попался. В общем не буду долго посыпать голову пеплом, если моё решение поможет ещё кому нибудь - буду рад  smile.
P.S. Жаль что порой самые очевидные и правильные решения приходят к нам в последнюю очередь.    

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)