How do I set up a COM Server interface with Excel?

Версии
Excel 2003
Windows XP
SimaPro 7.3.0 Developer Version
Using a Work computer but was made administrator on this machine
Libraries referenced in Excel/VBA: Visual Basic for Applications; Microsoft Excel 11.0 Object Library; OLE Automation; Microsoft Office 11.0 Object Library; Microsoft Forms 2.0 Object Library; COM+ 1.0 Admin Type Library; COM MakeCab 1.0 Type Library; COM+ Services Type Library; SimaPro Library
Me: Beginner

What I'm trying to do I am using a program called SimaPro that stores databases of "Life Cycle Analysis" information. The program has built in COM interface functionality. The program states that it does, indeed support Excel/VBA (but it doesn't specify versions).

Я пытаюсь соединить эту программу и / или 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 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам