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)
Báo lỗi: compile error : agrument not optional ,ở dòng : ret = myDatabaseTables.GetAvailableTables(NumTables)
Mà không biết sửa 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
Mà không biết sửa lỗi