作为结构工程师,你是否曾经困惑于ETABS中到底有哪些数据表格可以导出?Show Tables菜单中一个个查看既费时又不全面。今天我们来学习一个强大的API功能:一键获取ETABS中所有可用表格的完整清单。
在ETABS的Display菜单中,有数百个可用的表格,包括:
问题是:你很难记住所有表格的确切名称,而API调用需要精确的TableKey
。这个脚本就像是一个"表格目录",帮你快速找到需要的数据表格。
Sub Get_Available_Tables()
'获取ETABS中所有可用的表格列表
Dim myETABSObject As ETABSv1.cOAPI
Dim mySapModel As ETABSv1.cSapModel
Dim ret As Long
On Error GoTo ErrHandler
'连接到ETABS
Set myETABSObject = GetObject(, "CSI.ETABS.API.ETABSObject")
Set mySapModel = myETABSObject.SapModel
'获取所有可用表格
Dim NumberTables As Long
Dim tableKey() As String
Dim TableName() As String
Dim ImportType() As Long
Dim IsEmpty() As Boolean
ret = mySapModel.DatabaseTables.GetAllTables(NumberTables, tableKey, TableName, ImportType, IsEmpty)
'清空工作表并设置标题
With Worksheets(1)
.Cells.Clear
.Cells(1, 1).Value = "ETABS可用表格列表"
.Cells(1, 1).Font.Bold = True
.Cells(1, 1).Font.Size = 14
'设置表头
.Cells(3, 1).Value = "序号"
.Cells(3, 2).Value = "表格键值(TableKey)"
.Cells(3, 3).Value = "表格名称(TableName)"
.Cells(3, 4).Value = "导入类型"
.Cells(3, 5).Value = "是否为空"
.Range("A3:E3").Font.Bold = True
.Range("A3:E3").Interior.Color = RGB(200, 200, 200)
End With
'导出表格信息
Dim i As Long
For i = 0 To NumberTables - 1
Dim importTypeDesc As String
Select Case ImportType(i)