[thắc mắc] code excel kết nối etabs, xem giúp sai ở đâu

hoangvhuy.na

Yêu THVBA
Tôi có dùng chat GPT viết 1 đoạn code, VBA, excel kết nối etabs đang chạy thông qua API để lấy dữ liệu, mà cứ báo lỗi,
Mọi người xem giúp lỗi
compile error : agrument not optional ,ở dòng : ret = myDatabaseTables.GetAvailableTables(NumTables)

ConnectETABS_ExportData:
Sub ConnectETABS_ExportData()
    ' Kich hoat xu ly loi
    On Error GoTo ErrHandler

    ' Khai bao bien ket noi voi ETABS
    Dim myHelper As ETABSv1.cHelper
    Dim myETABSObject As ETABSv1.cOAPI
    Dim mySapModel As ETABSv1.cSapModel
    Dim myDatabaseTables As ETABSv1.cDatabaseTables
   
    ' Khai bao bien luu tru du lieu
    Dim TableNames() As String ' Mang luu danh sach bang du lieu
    Dim NumTables As Long ' Bien luu so luong bang
    Dim ret As Long ' Bien kiem tra ket qua API
   
    ' Tao doi tuong Helper de ket noi voi ETABS
    Set myHelper = New ETABSv1.Helper

    ' Thu ket noi voi ETABS dang chay
    On Error Resume Next
    Set myETABSObject = myHelper.GetObject("CSI.ETABS.API.ETABSObject")
    On Error GoTo 0
   
    ' Neu ETABS chua chay, mo ETABS moi
    If myETABSObject Is Nothing Then
        Set myETABSObject = myHelper.CreateObjectProgID("CSI.ETABS.API.ETABSObject")
        myETABSObject.ApplicationStart
    End If

    ' Kiem tra ket noi
    If myETABSObject Is Nothing Then
        MsgBox "Khong the ket noi voi ETABS!", vbCritical
        Exit Sub
    End If

    ' Lay doi tuong SapModel va DatabaseTables
    Set mySapModel = myETABSObject.SapModel
    Set myDatabaseTables = mySapModel.DatabaseTables

    ' Goi ham lay so luong bang du lieu
    ret = myDatabaseTables.GetAvailableTables(NumTables)
   
    ' Kiem tra neu ham tra ve loi
    If ret <> 0 Then
        MsgBox "Loi khi lay so luong bang du lieu!", vbCritical
        Exit Sub
    End If

    ' Kiem tra neu khong co bang nao
    If NumTables = 0 Then
        MsgBox "Khong co bang du lieu trong mo hinh!", vbExclamation
        Exit Sub
    End If

    ' Cap phat kich thuoc cho mang TableNames
    ReDim TableNames(NumTables - 1) As String

    ' Goi ham lay danh sach bang du lieu
    ret = myDatabaseTables.GetAvailableTableNames(NumTables, TableNames)

    ' Kiem tra neu ham tra ve loi
    If ret <> 0 Then
        MsgBox "Loi khi lay danh sach bang du lieu!", vbCritical
        Exit Sub
    End If

    ' Xuat danh sach bang du lieu ra Excel
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1) ' Lay sheet dau tien
   
    ' Ghi tieu de
    ws.Cells(1, 1).Value = "Danh sach cac bang du lieu trong ETABS"
    ws.Cells(2, 1).Value = "STT"
    ws.Cells(2, 2).Value = "Ten bang"

    ' Ghi du lieu vao Excel
    Dim i As Integer
    For i = 0 To NumTables - 1
        ws.Cells(i + 3, 1).Value = i + 1 ' So thu tu
        ws.Cells(i + 3, 2).Value = TableNames(i) ' Ten bang
    Next i

    ' Thong bao hoan thanh
    MsgBox "Da lay thanh cong danh sach bang du lieu!", vbInformation

    ' Giai phong bo nho
    Set myDatabaseTables = Nothing
    Set mySapModel = Nothing
    Set myETABSObject = Nothing
    Set myHelper = Nothing

    Exit Sub

ErrHandler:
    ' Hien thi thong bao loi neu co loi xay ra
    MsgBox "Loi: " & Err.Description, vbCritical
    Exit Sub

End Sub
Báo lỗi: compile error : agrument not optional ,ở dòng : ret = myDatabaseTables.GetAvailableTables(NumTables)
Mà không biết sửa lỗi
 
Top