Kỹ thuật lập trình VB6->DLL cho Excel & Debugging cho Excel

khanhnn85

Thành viên mới
Tham gia ngày
22 Tháng bảy 2010
Bài viết
5
Được thích
1
Điểm
365
Tuổi
34
Mục đích bài viết này tôi muốn gửi tới các thành viên 2 nội dung chính:

1) Kỹ thuật Debug trong Excel
Trong việc lập trình, có những bài toán đơn giản ta có thể viết hàm hay thủ tục một cách dễ dàng, nhưng có những bài toán phức tạp mà kết quả của một hàm chúng ta cần phải kiểm tra kỹ lưỡng tiến trình nhận kết quả của chúng, và đôi khi xảy ra lỗi chúng ta cũng cần phải tìm lỗi do đâu...

Video demo:
http://www.bluesofts.net/Programming/DebugVBA/DebugVBA.html

2) Kỹ thuật viết hàm, thủ tục trong VB6, biên dịch DLL và nhúng trong Excel, phương pháp Debug giũa 2 môi trường VB6 & VBA

Đã từ lâu, nhiều người đã rất lo lắng về việc mã nguồn viết trong VBA dẽ dàng bị lộ bởi cơ chế bảo mật của VBA không được tốt. Có một giải pháp là chúng ta viết mã trong thư viện DLL sau đó nhúng DLL này trong Excel, VBA để sử dụng.
+ Ưu điểm của phương pháp này là:
- Bảo mật được mã nguồn trong DLL (tốt hơn VBA vì nó đã được mã hóa)
- Xây dựng được hệ thống các thư viện các hàm và thủ tục có thể dùng chung cho nhiều ứng dụng khác nhau.
- Không bị các PM diệt virus diệt như với code trong VBA.
- Thừa hưởng các tài nguyên, control tốt trong VB6

+ Nhược điểm:
- Tốc độ chạy không nhanh bằng các hàm và thủ tục viết trực tiếp trong VBA.

Vấn đề viết mã trong VB6 hay các ngôn ngữ khác để tạo ra DLL dùng cho Excel cũng gặp phải một trở ngại là làm sao biết được mã mình viết trong DLL là đảm bảo chính xác? Nhiều người trước đây đã phải làm một việc rất vất vả là viết hàm trong VBA, kiểm tra chạy tốt rồi mới đưa sang VB6 để biên dịch thành DLL, nhưng khi có sự sửa chữa, nâng cấp mã thì công việc chuyển đổi giữa VBA->VB6 khá phiền hà. Phương án giải quyết vấn đề này là viết mã trực tiếp trong VB6, dùng kỹ thuật Debug trong VB6 cho Excel, VBA.
...

Video demo:
http://www.bluesofts.net/Programming/DebugVB6VBA/DebugVB6VBA.html

Download Video & ví dụ

.
Chào anh Tuân
tôi có tải về ví dụ trong bài trên và tôi đã gọi được sub lệnh Thongbao. nhưng còn vấn đề về Function thì lại báo lỗi.
trong excel khi điền công thức "=VB6VBA.Funcs.VBSum(B3:C5)" thì toàn báo lỗi #NAME?
Mong anh giải đáp dùm
 

thuyyeu99

Trùm Nhiều Chuyện
Tham gia ngày
6 Tháng sáu 2008
Bài viết
1,308
Được thích
541
Điểm
860
Chào anh Tuân
tôi có tải về ví dụ trong bài trên và tôi đã gọi được sub lệnh Thongbao. nhưng còn vấn đề về Function thì lại báo lỗi.
trong excel khi điền công thức "=VB6VBA.Funcs.VBSum(B3:C5)" thì toàn báo lỗi #NAME?
Mong anh giải đáp dùm
Mình chỉ biết do VBA không biết =VB6VBA.Funcs.VBSum(B3:C5) là gì, để làm sao VBA biết =VB6VBA.Funcs.VBSum(B3:C5) thì mình không biết
 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,230
Được thích
9,738
Điểm
860
Nơi ở
Hà Nội
Chào anh Tuân
tôi có tải về ví dụ trong bài trên và tôi đã gọi được sub lệnh Thongbao. nhưng còn vấn đề về Function thì lại báo lỗi.
trong excel khi điền công thức "=VB6VBA.Funcs.VBSum(B3:C5)" thì toàn báo lỗi #NAME?
Mong anh giải đáp dùm
Vì DLL này tạo bên VB6 nên nó chỉ chạy được cho Excel 32-bit. Nếu bạn có VB6 và biên dịch DLL trên thì nó tự RegSvr32 DLL chp bạn. Nếu bạn chỉ lấy DLL và chạy thì phải tự RegSvr32 nhé.

Cách đăng ký DLL trên máy:
+ Bước 1: Mở chương trình Command Prompt (có thể nên chạy "Run as administrator)
+ Bước 2: Gõ lệnh:
Regsvr32 "đường dẫn\file.dll"

ENTER

Nếu thành công bạn sẽ nhận được thông báo Install success!

Vì VB6 không còn phát triển, tệ nhất là không biên dịch ra 64-bit nên tôi định hướng mọi người nên học ngôn ngữ khác như Delphi để biên dịch đa nền tảng với native code. Hoặc dùng .NET cũng được nhưng tôi cung thích lắm vì không phải native code,...
 

khanhnn85

Thành viên mới
Tham gia ngày
22 Tháng bảy 2010
Bài viết
5
Được thích
1
Điểm
365
Tuổi
34
Vì DLL này tạo bên VB6 nên nó chỉ chạy được cho Excel 32-bit. Nếu bạn có VB6 và biên dịch DLL trên thì nó tự RegSvr32 DLL chp bạn. Nếu bạn chỉ lấy DLL và chạy thì phải tự RegSvr32 nhé.

Cách đăng ký DLL trên máy:
+ Bước 1: Mở chương trình Command Prompt (có thể nên chạy "Run as administrator)
+ Bước 2: Gõ lệnh:
Regsvr32 "đường dẫn\file.dll"

ENTER

Nếu thành công bạn sẽ nhận được thông báo Install success!

Vì VB6 không còn phát triển, tệ nhất là không biên dịch ra 64-bit nên tôi định hướng mọi người nên học ngôn ngữ khác như Delphi để biên dịch đa nền tảng với native code. Hoặc dùng .NET cũng được nhưng tôi cung thích lắm vì không phải native code,...
tôi đã làm theo cách anh chỉ, nhưng vẫn không thấy hàm Function đó chạy. tôi đã Install success!
và đây là hàm Function đó:
Function VBSum(ByVal rng As Range) As Double
Dim Cell As Range

For Each Cell In rng
Debug.Print Cell.Address, Cell.Value2
VBSum = VBSum + Cell.Value2
Next

End Function
 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,230
Được thích
9,738
Điểm
860
Nơi ở
Hà Nội
tôi đã làm theo cách anh chỉ, nhưng vẫn không thấy hàm Function đó chạy. tôi đã Install success!
và đây là hàm Function đó:
Function VBSum(ByVal rng As Range) As Double
Dim Cell As Range

For Each Cell In rng
Debug.Print Cell.Address, Cell.Value2
VBSum = VBSum + Cell.Value2
Next

End Function
Bạn vào Add-in Manager chọn Automation và chọn tới DLL này nhé.
 

huonglien1901

GPE là ngôi nhà thứ 2 của tôi!!!
Tham gia ngày
17 Tháng tư 2016
Bài viết
2,227
Được thích
1,823
Điểm
360
Tuổi
28
Cho em hỏi để đăng ký reg 32 trong dephi thì cách làm như thế nào.
Em win10 64 bit office 2016. Sao em làm hoài mà không được .
 

huuduy.duy

Thành viên tích cực
Tham gia ngày
29 Tháng mười 2010
Bài viết
805
Được thích
92
Điểm
420
Nơi ở
Cà Mau
Chào anh
Cho em hỏi, em làm 1 Function và Make to Dll
Nhưng khi đăng ký thì báo lỗi như hình

Nhờ anh hướng dẫn
1.png2.png
 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,230
Được thích
9,738
Điểm
860
Nơi ở
Hà Nội
Top Bottom