如何将VBA代码与已打开的ETABS OAPI链接?

时间:2017-03-16 12:23:43

标签: vba api

ETABS 2015项目在我的电脑上开放。我想通过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)

此代码只是在我的电脑中打开一个新的ETABS。但我的ETABS项目已经开始运行,我想连接到它,但我不知道怎么做! 请帮帮我。

1 个答案:

答案 0 :(得分:1)

您的示例代码基本上是打开ETABS ITSELF 并初始化新模型所需的代码, 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-你仍然可以使用GetObject即使ETABS没有打开,如果你想从windows shell打开它(比如使用命令提示打开程序而不是双击各自的图标),但是这个当然需要一些错误处理和“Windows脚本宿主对象模型”的使用。

3-文档中的示例(在记录的方法和属性下)在启动输入数据方面可能不完整,在这种情况下,它们只是为了创建如何使用各自方法和属性的印象。