我的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-在启动输入数据方面,文档中的示例(在记录的方法和属性下)可能并不完整,在这种情况下,它们只是给人一种如何使用其各自方法和属性的印象。