繁体   English   中英

如何使用 Excel 设置 COM 服务器接口?

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

版本
Excel 2003
Windows XP
SimaPro 7.3.0 开发者版
使用工作计算机,但在这台计算机上被设置为管理员
Excel/VBA 中引用的库:Visual Basic for Applications; 微软 Excel 11.0 Object 库; OLE 自动化; Microsoft Office 11.0 Object 库; 微软 Forms 2.0 Object 库; COM+ 1.0 管理类型库; 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 有关吗? 我曾与公司的 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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM