Как настроить интерфейс COM-сервера в Excel? - PullRequest
0 голосов
/ 28 июня 2011

Версия
Excel 2003
Windows XP
Версия разработчика SimaPro 7.3.0
Использование рабочего компьютера, но на этом компьютере он был назначен администратором
Библиотеки, на которые есть ссылки в Excel / VBA: Visual Basic для приложений; Библиотека объектов Microsoft Excel 11.0; OLE-автоматизация; Библиотека объектов Microsoft Office 11.0; Библиотека объектов Microsoft Forms 2.0; COM + 1.0 Admin Type Library; COM MakeCab 1.0 Библиотека типов; Библиотека типов услуг COM +; Библиотека SimaPro
Я: Начинающий

Что я пытаюсь сделать Я использую программу под названием SimaPro, которая хранит базы данных «Анализ жизненного цикла». Программа имеет встроенный интерфейс COM. Программа заявляет, что она действительно поддерживает Excel / VBA (но не указывает версии).

Я пытаюсь соединить эту программу и / или COM-сервер для Excel, чтобы я мог взаимодействовать с информацией через Excel.

Что я сделал
Я выполнил процедуру, которую они перечислили:
-Открытый SimaPro
-Регистрация COM-сервера
- Затем я вставил приведенный ниже код в VBA и попытался запустить его. Этот код является примером кода, предоставленного компанией-разработчиком программного обеспечения. Я отредактировал только поля SP.Server, SP.Alias, SP.Login и SP.OpenProject (ниже редактируется).

Что случилось
Ошибка времени выполнения: '-2147418113 (8000ffff)':
Ошибка автоматизации
Катастрофический провал

Вопрос (ы)
-Это имя сервера, верно? Я немного читал на COM-серверах, и я не знаю, находится ли способ, которым я это поместил, в правильной «форме»
-Может ли это иметь отношение к определенным зарегистрированным / незарегистрированным DLL? Я работал с ИТ-специалистами компании и программистами. Никто из них не был хорошо знаком с COM, но один человек предположил, что проблема может быть в DLL.

Спасибо за вашу помощь !!

Вот код, который я ввожу:

Sub CreateProcess()
Dim SP As SimaProServer
Dim PC As Process
Dim PC2 As Process
Dim PL As ProcessLine
Dim Param As ParamLine
Dim Subs As Substance
Set SP = New SimaProServer
SP.Server = "Local Server"
SP.Alias = "C:\Documents and Settings\All Users\Documents\SimaPro\Database\"
SP.Database = "Professional"
SP.OpenDatabase
SP.Login "", ""
SP.OpenProject "PROJECT", ""
' Not project's actual name, not allowed to state name of project
SP.CreateSubstance "Air", Subs
Subs.CASNumber = "4-5-13"
Subs.Name = "Some substance"
Subs.DefaultUnit = "kg"
Subs.Update
SP.CreateProcess ptMaterial, PC
Set PL = PC.AddLine(ppProduct, -1)
PL.ObjectName = "Steel 2"
PL.UnitName = "kg"
PL.Amount = "2"
PL.Comment.Add ("My new created process")
PL.CategoryPath = "Chemicals\inorganic"
PC.Update
' create second material process Case
SP.CreateProcess ptMaterial, PC2
Set PL = PC2.AddLine(ppProducts, 0)
PL.ObjectName = "Case 2"
PL.UnitName = "kg"
PL.Amount = "10"
Set Param = PC2.AddParamLine(ptInputParameter, -1)
Param.Name = "A"
Param.Value = "2,3"
' add input from Steel
Set PL = PC2.AddLine(ppMaterialsFuels, -1)
' input from steel
PL.SetProduct "Introduction to SimaPro 7", ptMaterial, "Steel 2"
PL.Amount = "8"
PL.UnitName = "kg"
Set PL = PC2.AddLine(ppAirborneEmissions, -1)
' input from steel
PL.SetSubstance "Some substance", ""
PL.Amount = "A+1"
PL.UnitName = "kg"
PC2.Update
SP.Logout
SP.CloseDatabase
Set SP = Nothing
End Sub

Ответы [ 2 ]

1 голос
/ 25 августа 2012

Учитывая, что это было больше года назад.Я предполагаю, что у вас это работает.Если вы еще этого не сделали, я мог бы знать, в чем может быть основная причина.

Я использовал, чтобы получить ту же ошибку, и из ваших изменений для сервера, псевдонима и имени входа я смог заставить его работать.Отличительной особенностью является то, что вы изменили название проекта на «Проект» с «Введение в SimaPro 7».Честно говоря, у меня ноль (не скромность здесь) знаний VBA.Итак, я предполагаю, что нет названий проектов "Project", чтобы открыть.Я не уверен, что VBA создаст проект автоматически, если он не может его найти.Вы можете попробовать создать проект с именем «Project» или просто переименовать его.Мне интересно посмотреть, сработало ли это.

0 голосов
/ 29 июня 2011

Automation Error обычно означает, что возникла проблема в библиотеке COM, которую вы пытаетесь использовать. Так как это ошибка времени выполнения, это может быть что-то очень глупое, например, отсутствующий параметр, неверный путь или права доступа. На мой взгляд, это также означает, что библиотека не очень хорошо спроектирована.

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

Отвечая на ваш первый вопрос, если вы ссылались на библиотеку и код компилируется - это значит, что вы все сделали прямо там.

...