我的PC上打开了有关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)


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

最佳答案

您的示例代码基本上(通常)是打开ETABS ITSELF并初始化新模型所需的代码,
ETABSObject = CreateObject("CSI.ETABS.API.ETABSObject")然后是ApplicationStart方法的调用是实现此目的的直接方法。

如果您在安装目标位置中引用了ETABS API文档文件(例如,“ C:\ Program Files \ Computers and Structures \ ETABS 2015 \ CSi API ETABS 2015.chm”),则在“发行说明>附加到手动启动的实例”部分下”,或者在链接中看到相同的部分
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-在启动输入数据方面,文档中的示例(在记录的方法和属性下)可能并不完整,在这种情况下,它们只是给人一种如何使用其各自方法和属性的印象。

10-08 01:43