2017-03-16 172 views
2

ETABS 2015上的一個項目在我的PC上打開。我想自動執行一些VBA代碼的更改和處理。但我發現的所有示例代碼如下所示:如何將VBA代碼與打開的ETABS OAPI鏈接?

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 本身並初始化一個新的模型, ETABSObject = CreateObject("CSI.ETABS.API.ETABSObject")接着ApplicationStart方法的調用是用於該直接的手段所需要的一個。

如果您參考安裝目標中的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 shell打開它(如使用命令提示符打開程序而不是雙擊它們各自的圖標),仍然可以使用GetObject,但這當然需要一些錯誤處理和「Windows腳本宿主對象模型」的使用。

3-文檔中的示例(在記錄的方法和屬性下)在啓動輸入數據方面可能並不完整,在這種情況下,它們只是爲了創建如何使用它們各自的方法和屬性的印象。