2017-03-16 7 views
2

ETABS 2015に関するプロジェクトは私のPCで開かれています。私はいくつかの変更を行い、VBAコードでそれを自動的に処理したい。私が見つけたすべてのサンプルコードはこのようでした:オープンされたETABS OAPIにVBAコードをリンクする方法は?

Public Sub Example() 
     Dim SapModel As cSapModel 
     Dim EtabsObject As cOAPI 
     Dim FileName as String 
     Dim ret As Integer = -1 

    'create ETABS object 
     EtabsObject = CreateObject("CSI.ETABS.API.ETABSObject") 

    'start ETABS application 
     ret = EtabsObject.ApplicationStart() 

    'create SapModel object 
     SapModel = EtabsObject.SapModel 

    'initialize model 
     ret = SapModel.InitializeNewModel() 

    'open an existing file - If no file exists, run the Save example first. 
     FileName = "c:\CSI_API_temp\example.edb" 
     ret = SapModel.File.OpenFile(FileName) 

このコードは私のPCに新しいETABSをオープンするだけです。私のETABSプロジェクトは既に稼働しており、私はそれに接続したいが、私はどのように分かっていないのか! 私を助けてください。

答えて

1

あなたサンプルコードは、基本的には、一般的にETABS 自体を開き、新しいモデルを初期化するために必要なものです、ApplicationStartメソッドの呼び出しに続いて ETABSObject = CreateObject("CSI.ETABS.API.ETABSObject")は、そのための直接的な手段です。

インストール先のETABS APIドキュメントファイル(「C:\ Program Files \ Computers and Structures \ ETABS 2015 \ CSi API ETABS 2015.chm」など)を参照している場合は、「リリースノート>手動で「ETABSのインスタンスを開始した、またはあなたがリンク http://docs.csiamerica.com/help-files/etabs-api-2015/html/3ceb8889-9028-4de3-9c87-69a12055ade7.htm から同じセクションを参照してください場合は、あなたがすることを目指すものに近い(VB.Netでの)コードを見つけることができますが、それは、VBAでは動作しませんので、どのようなあなたはこれだけです。

'The ret variable, just for method invocation convenience 
    Dim ret As Integer 

    'Create an instance of the currently opened Program 
    Dim myETABSObject As ETABS2015.cOAPI 
    Set myETABSObject = GetObject(, "CSI.ETABS.API.ETABSObject") 

    'Create an instance to the model 
    Dim myETABSModel As ETABS2015.cSapModel 
    Set myETABSModel = myETABSObject.SapModel 

    'Now, after the "reference instances" are obtained 

    'Initialize the model (using the model's instance of course) 
    ret = myETABSModel.InitializeNewModel() 'default units in kip_in_F 

    'Set the model templete, which is "Blank" 
    ret = myETABSModel.File.NewBlank() 

通常、あなたのコーディングを進めることができます。


注:ETABSが開かれていない場合の1- GetObject(CSI.ETABS.API.ETABSObject)方法は、エラーが発生します。

2 - まだETABSが開かれていなくても、Windowsシェルから開く場合(コマンドプロンプトを使用してそれぞれのアイコンをダブルクリックする代わりにプログラムを開くなど)でも使用できますが、これはもちろん必要ですいくつかのエラー処理と "Windowsスクリプトホストオブジェクトモデル"の使用。

3-ドキュメントのメソッドとプロパティの例では、入力データの開始に関して完全ではない場合があります。このような場合は、それぞれのメソッドとプロパティの使用方法の印象を作成するだけです。

関連する問題