nth09061985
Thành viên mới

- Tham gia
- 19/7/13
- Bài viết
- 49
- Được thích
- 5
Mấy hôm nay em đang học cách biên dịch code VBA sang mã dll bằng cách dùng VB6, Em có làm thử mấy cái sub đơn giản kiểu như msgbox "GÌ GÌ ĐÓ" thì khi sang VBA bên excel thi chạy được nhưng khi em tạo thủ tục phức tạp hơn 1 chút bên VB6 thì khi chạy nó báo lỗi như sau:
run-time error '1004'
method '~' of object '~' failed
Cụ thể như sau ạ:!
Bên VB6 em có viết thủ tục sau:
Sau đó em Make..... thành file Vidu1.dll (project1 em đổi tên thành Duan1)
Bên cửa sổ VBA của File Test.Xlsm em tạo thủ tục như sau:
Nhưng khi chạy code nó báo lỗi như em đưa ở trên ạ?
Em muốn hỏi các anh chị mấy ý:
+ Tại sao code trong VBA nó báo lỗi, liệu có phải code trong VB6 em viết sai?
+ Cần lưu ý gì khi viết code trong VB6? Các anh chị giải thích giúp em kĩ chỗ này 1 chút, vì em không biết trong VB6 cái gì được dùng cái gì không được dùng ạ! (Ví dụ về: Phương thức, thuộc tính, mảng....)
P/S: Trước khi viết code trong VB6 thì em đã test trước trong VBA thì code chạy ngon ạ!
Mong anh chị giúp đỡ!
run-time error '1004'
method '~' of object '~' failed
Cụ thể như sau ạ:!
Bên VB6 em có viết thủ tục sau:
Mã:
Private Excel As Excel.Application
Public Property Set ExcelApp(ByRef ExcelApp As Excel.Application)
Set Excel = ExcelApp
End Property
Public Sub Test()
Dim Dic As Object
Dim DL(), Lr As Long, Kq(), i As Long, d As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Excel.ActiveWorkbook.Sheets("Sheet1")
Lr = .Range("A" & Rows.Count).End(xlUp).Row
DL = .Range("A2:B" & Lr)
ReDim Kq(1 To UBound(DL, 1), 1 To 2)
For i = 1 To UBound(DL, 1)
With Dic
If Not .Exists(DL(i, 2)) Then
d = d + 1
.Add DL(i, 2), d
Kq(d, 1) = d
Kq(d, 2) = DL(i, 2)
End If
End With
Next i
.Range("D2").Resize(d, 2) = Kq
End With
End Sub
Private Sub Class_Terminate()
Set Excel = Nothing
End Sub
Sau đó em Make..... thành file Vidu1.dll (project1 em đổi tên thành Duan1)
Bên cửa sổ VBA của File Test.Xlsm em tạo thủ tục như sau:
Mã:
Public Sub Test()
Dim Obj As New Duan1.Vidu1
Set Obj = New Duan1.Vidu1
Set Obj.ExcelApp = Application
Obj.Test
End Sub
Em muốn hỏi các anh chị mấy ý:
+ Tại sao code trong VBA nó báo lỗi, liệu có phải code trong VB6 em viết sai?
+ Cần lưu ý gì khi viết code trong VB6? Các anh chị giải thích giúp em kĩ chỗ này 1 chút, vì em không biết trong VB6 cái gì được dùng cái gì không được dùng ạ! (Ví dụ về: Phương thức, thuộc tính, mảng....)
P/S: Trước khi viết code trong VB6 thì em đã test trước trong VBA thì code chạy ngon ạ!
Mong anh chị giúp đỡ!
File đính kèm
Lần chỉnh sửa cuối: