0

版本
Excel 2003
Windows XP
SimaPro 7.3.0 开发者版本
使用工作计算机,但在这台机器上被设置为管理员
Excel/VBA 中引用的库:Visual Basic for Applications;Microsoft Excel 11.0 对象库;OLE 自动化;Microsoft Office 11.0 对象库;Microsoft Forms 2.0 对象库;COM+ 1.0 管理类型库;COM MakeCab 1.0 类型库;COM+ 服务类型库;SimaPro Library
Me:初学者

我正在尝试做 的我正在使用一个名为 SimaPro 的程序,它存储“生命周期分析”信息的数据库。该程序具有内置的 COM 接口功能。该程序声明它确实支持 Excel/VBA(但它没有指定版本)。

我正在尝试将此程序和/或 COM 服务器连接到 excel,以便我可以通过 excel 与信息进行交互。

我所做
的我已经完成了他们列出的程序: -
打开 SimaPro
-注册 COM 服务器 -然后
我将以下代码粘贴到 VBA 中并尝试运行它。这段代码是软件公司提供的示例代码,我只编辑了SP.Server、SP.Alias、SP.Login和SP.OpenProject这几个字段(下面是编辑的)。

发生了什么
运行时错误:'-2147418113 (8000ffff)':
自动化错误
灾难性故障

问题 -
服务器名称正确吗?我已经在 COM 服务器上阅读了一些内容,但我不知道我放入它的方式是否是正确的“形式”
——它可能与某些已注册/未注册的 DLL 有关吗?我曾与公司的 IT 人员和软件程序员一起工作过。他们中没有一个人对 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
4

2 回答 2

1

鉴于这是一年多前的事了。我假设你有这个工作。如果你还没有,我可能知道根本原因可能是什么。

我曾经遇到过同样的错误,并且从您对服务器、别名和登录名的更改中,我能够使其运行。不同的是,您已将项目名称从“SimaPro 7 简介”更改为“项目”。老实说,我的 VBA 知识为零(在这里并不谦虚)。所以,我推测没有项目名称“项目”可以打开。我不确定 VBA 是否会自动创建一个项目,如果它找不到它。您可以尝试创建一个名为“Project”的项目,也可以将其重命名。我有兴趣看看这是否有效。

于 2012-08-24T21:40:53.833 回答
0

Automation Error通常意味着您尝试使用的 COM 库中存在问题。由于它是一个运行时错误,它可能是非常愚蠢的,例如缺少参数或错误的路径或访问权限。在我看来,这也意味着图书馆的设计不是很好。

由于您不是图书馆的作者,因此您没有太多选择。您可以尝试联系供应商以获取更多文档。您也可以祈祷设计者考虑日志记录 - 检查事件日志;如果你幸运的话,你可能会在那里找到一些有趣的东西。

回答你的第一个问题,如果你引用了这个库并且代码编译了——这意味着你在那里做了所有的事情。

于 2011-06-29T08:47:17.653 回答