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 ライブラリ
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

これが1年以上前だったことを考えると。私はあなたがこれを機能させたと思います。まだの場合は、根本的な原因が何であるかを知っているかもしれません。

以前は同じエラーが発生し、サーバー、エイリアス、ログインの変更から、それを実行することができました。異なる点の1つは、プロジェクトの名前を「IntroductiontoSimaPro7」から「Project」に変更したことです。私は正直なところ、VBAの知識はゼロです(ここでは謙虚ではありません)。ですから、開くプロジェクト名「Project」はないと思います。プロジェクトが見つからない場合、VBAがプロジェクトを自動的に作成するかどうかはわかりません。「Project」という名前のプロジェクトを作成するか、名前を元に戻すことができます。それがうまくいったかどうか興味があります。

于 2012-08-24T21:40:53.833 に答える
0

Automation Error通常、使用しようとしている COM ライブラリ内に問題があったことを意味します。これは実行時エラーであるため、パラメーターが欠落しているか、パスまたはアクセス権が間違っているなど、非常にばかげたものである可能性があります。私の意見では、これはライブラリがあまりうまく設計されていないことも意味します。

あなたはライブラリの作成者ではないので、多くのオプションはありません。ベンダーに連絡して、詳細なドキュメントを入手してください。また、設計者がロギングについて考えたことを祈ることもできます。イベント ログを確認してください。運が良ければ、面白いものが見つかるかもしれません。

ライブラリを参照してコードがコンパイルされた場合、最初の質問に答えます。つまり、そこですべてを実行したということです。

于 2011-06-29T08:47:17.653 に答える