ETABS OAPI提取模态参与质量比表时Groups参数类型不匹配求助
问题排查与修复
错误原因
ETABS OAPI的GetTableForDisplayArray方法中,Groups参数要求传入一维字符串数组(String()),你当前声明的是Groups() As Variant,且未正确初始化动态数组就直接赋值,导致类型不匹配错误。
修复步骤
- 将Groups的变量类型改为
String()而非Variant() - 通过
ReDim先初始化数组,再赋值"All"
修改后的完整代码
Public Sub GetModalParticipationTable() Dim Fields() As String Dim Data As Variant ' 修正:将Groups改为字符串数组 Dim Groups() As String Dim ret As Long Dim i As Long ' Validar conexión If SapModel Is Nothing Then MsgBox "No hay conexión activa con ETABS.", vbCritical Exit Sub End If ' 修正:先初始化数组再赋值 ReDim Groups(0 To 0) Groups(0) = "All" ' Extraer tabla ret = SapModel.DatabaseTables.GetTableForDisplayArray("Modal Participating Mass Ratios", Fields, Data, Groups) If ret <> 0 Then MsgBox "No se pudo extraer la tabla 'Modal Participating Mass Ratios'. Código: " & ret, vbExclamation Exit Sub End If ' Validar contenido If IsEmpty(Data) Then MsgBox "La tabla está vacía o no hay resultados disponibles.", vbInformation Exit Sub End If ' Volcar a tabla estructurada Dim tbl As ListObject Set tbl = shtETABSMODOS.ListObjects("tbl_ETABS_MODOS") Call VolcarArrayEnTabla(tbl, Data) MsgBox "Tabla de participación modal extraída exitosamente.", vbInformation End Sub
额外注意事项
- 确认ETABS版本的OAPI文档,部分版本中
GetTableForDisplayArray的Groups参数需严格匹配组名称格式,"All"是通用有效值 - 若仍报错,可对照ETABS OAPI文档的返回码表排查,确认是否为表名称拼写错误或模型未生成模态分析结果
内容的提问来源于stack exchange,提问作者Julián Felipe Herrera Mejía
相关产品推荐
相关产品推荐

