em chỉ mới chập chững viết code bên vb6.....
khi đọc tài liệu trên internet thì chỉ cần mình viết chuẩn bên vba thì qua bên vb6 cũng với code đó có thể sử dụng được nhưng mình làm chỉ toàn thấy báo lỗi.
mong các pác nào có kinh nghiệm xin chỉ giáo thêm
em có tải file hình báo thông tin lỗi kèm với file mà em viết....
Chào bạn,
Bạn phải cụ thể hơn, đưa đoạn code thì hy vọng mới có người giúp bạn được.
Nên nhớ rằng VBA và VB6 khác nhau, không phải code nào trong VBA được thì VB6 cũng được.
Sub lamthu()Dim loc As TN.thunghiem
Set loc = New TN.thunghiem
[COLOR=#ff0000] loc.loc_bh[/COLOR]
Set loc = Nothing
End Sub
đây chỉ là đoạn code đơn giản mà em đang làm thử chuyển qua DLL nhưng khi viết code trong excel thì lại bị lỗi như hình mà em có đưa file đính kèm
debug tại vị trí này ( loc.loc_bh) trong khi đó cũng với code đó chạy trên excel thì lại rất okie.......
em có gởi kèm file vb6 + flie DLL em đã xuất ra|+flie excel
thank các pác!!!
Sub lamthu()Dim loc As TN.thunghiem
Set loc = New TN.thunghiem
[COLOR=#ff0000] loc.loc_bh[/COLOR]
Set loc = Nothing
End Sub
đây chỉ là đoạn code đơn giản mà em đang làm thử chuyển qua DLL nhưng khi viết code trong excel thì lại bị lỗi như hình mà em có đưa file đính kèm
debug tại vị trí này ( loc.loc_bh) trong khi đó cũng với code đó chạy trên excel thì lại rất okie.......
em có gởi kèm file vb6 + flie DLL em đã xuất ra|+flie excel
thank các pác!!!
Option Explicit
' biến dùng để nhớ "vị" Application ma Excel truyền cho
Private FExcelApp As Excel.Application
Public Property Set ExcelApp(ByRef excel_App As Excel.Application)
' nhớ "vị" Application mà Excel truyền cho vào biến
Set FExcelApp = excel_App
End Property
Private Sub Class_Terminate()
Set FExcelApp = Nothing
End Sub
Sub loc_bh()
Dim mHangCuoi As Long
Dim i As Integer
' trong Excel bạn có thể viết tắt Cells thì Excel hiểu là bạn muốn truy cập tới
' Cells của ActiveSheet. VB không biết Cells này là gì nên bạn phải truy cập tới
' nó thông qua Application đã ghi nhớ
With FExcelApp.ActiveSheet
mHangCuoi = .Cells(65000, 15).End(xlUp).Row
.Range(.Cells(1, 23), .Cells(65000, 25)).ClearContents
For i = 2 To mHangCuoi
.Cells(i, 23) = .Cells(i, 16) & "_" & .Cells(i, 15)
.Cells(i, 24) = Mid(.Cells(i, 22), 2, 2) * 10
.Cells(i, 25) = Mid(.Cells(i, 22), 4, 2) * 10
Next i
End With
End Sub
Bên Excel
Mã:
Sub code_chay_goi_vb6()
Dim loc As TN.thunghiem
' Tạo đối tượng (object)
Set loc = New TN.thunghiem
' "truyền" Application (Pointer) sang cho VB
Set loc.ExcelApp = Application
' gọi Method
loc.loc_bh
Set loc = Nothing
End Sub
Hiện bên Excel bạn có tham chiếu tới DLL là Missing. Bạn xóa nó đi rồi thêm lại
Option Explicit
' biến dùng để nhớ "vị" Application ma Excel truyền cho
Private FExcelApp As Excel.Application
Public Property Set ExcelApp(ByRef excel_App As Excel.Application)
' nhớ "vị" Application mà Excel truyền cho vào biến
Set FExcelApp = excel_App
End Property
Private Sub Class_Terminate()
Set FExcelApp = Nothing
End Sub
Sub loc_bh()
Dim mHangCuoi As Long
Dim i As Integer
' trong Excel bạn có thể viết tắt Cells thì Excel hiểu là bạn muốn truy cập tới
' Cells của ActiveSheet. VB không biết Cells này là gì nên bạn phải truy cập tới
' nó thông qua Application đã ghi nhớ
With FExcelApp.ActiveSheet
mHangCuoi = .Cells(65000, 15).End(xlUp).Row
.Range(.Cells(1, 23), .Cells(65000, 25)).ClearContents
For i = 2 To mHangCuoi
.Cells(i, 23) = .Cells(i, 16) & "_" & .Cells(i, 15)
.Cells(i, 24) = Mid(.Cells(i, 22), 2, 2) * 10
.Cells(i, 25) = Mid(.Cells(i, 22), 4, 2) * 10
Next i
End With
End Sub
Bên Excel
Mã:
Sub code_chay_goi_vb6()
Dim loc As TN.thunghiem
' Tạo đối tượng (object)
Set loc = New TN.thunghiem
' "truyền" Application (Pointer) sang cho VB
Set loc.ExcelApp = Application
' gọi Method
loc.loc_bh
Set loc = Nothing
End Sub
Hiện bên Excel bạn có tham chiếu tới DLL là Missing. Bạn xóa nó đi rồi thêm lại
siwtom theo tôi biết bị đình chỉ từ lâu rồi
Bạn trích bài như thế chỉ làm ban quản trị họ đau thôi, vì tôi thấy GPE này có nhiều bài đề cập chuyện này rồi (cứ google sẽ thấy)