AI muốn lập trình DLL cho Excel và các loại bằng Delphi thì xem video này nhé!

Liên hệ QC

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,649
Được thích
10,138
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
Lần chỉnh sửa cuối:
I/ Các Bạn cho mình hỏi chút:

1/ Mình tập viết thư Viện liên kết động API trên Delphi theo như hướng dẫn của bài 1 tới bây giờ tạm viết OK

2/ Giờ Mình muốn chuyển qua viết ActiveX trên Delphi cũng là File *.DLL

II/ Vậy mình muốn hỏi

1/ 2 cái đó nó khác nhau cơ bản cái gì .... Mục 2 Ứng dụng vào việc gì là tốt nhất

2/ Khi viết ActiveX DLL thì mang qua máy khác sử dụng có phải đăng ký như DLL của VB6 hay không

3/ Khai báo và sử dụng nó trên VBA như thế nào

Xin cảm ơn
 
Upvote 0
I/ Các Bạn cho mình hỏi chút:

1/ Mình tập viết thư Viện liên kết động API trên Delphi theo như hướng dẫn của bài 1 tới bây giờ tạm viết OK

2/ Giờ Mình muốn chuyển qua viết ActiveX trên Delphi cũng là File *.DLL

II/ Vậy mình muốn hỏi

1/ 2 cái đó nó khác nhau cơ bản cái gì .... Mục 2 Ứng dụng vào việc gì là tốt nhất

2/ Khi viết ActiveX DLL thì mang qua máy khác sử dụng có phải đăng ký như DLL của VB6 hay không

3/ Khai báo và sử dụng nó trên VBA như thế nào

Xin cảm ơn

ActiveX có 2 loại. ActiveX DLL và ActiveX Control. Cả hai loại này viết đều rất khó, đặc biệt ActiveX Control (BSAC mà tôi viết để làm giao diện trên Userform là loại này).
ActiveX DLL khác với DLL bài 1 ở chỗ, nó dùng để tạo Class là chính. Bộ thư viện mà mọi người hay dùng là ADO, FSO chính là AcriveX DLL (các bạn hay dùng CreateObject("Tên Class") - Tên Class trong hàm đó chính là phải tạo trong ActiveX DLL. Loại ActiveX DLL mang sang bất kỳ máy tính nào đề phải REGSVR32 hết - Đây là nguyên tắc của Windows.

Để học và làm được ActiveX cần có hiểu biết sâu về hệ thống, cần nhiều thời gian học lắm. Nó khó hơn DLL chuẩn ở bài 1 rất nhiều.
 
Upvote 0
ActiveX có 2 loại. ActiveX DLL và ActiveX Control. Cả hai loại này viết đều rất khó, đặc biệt ActiveX Control (BSAC mà tôi viết để làm giao diện trên Userform là loại này).
ActiveX DLL khác với DLL bài 1 ở chỗ, nó dùng để tạo Class là chính. Bộ thư viện mà mọi người hay dùng là ADO, FSO chính là AcriveX DLL (các bạn hay dùng CreateObject("Tên Class") - Tên Class trong hàm đó chính là phải tạo trong ActiveX DLL. Loại ActiveX DLL mang sang bất kỳ máy tính nào đề phải REGSVR32 hết - Đây là nguyên tắc của Windows.

Để học và làm được ActiveX cần có hiểu biết sâu về hệ thống, cần nhiều thời gian học lắm. Nó khó hơn DLL chuẩn ở bài 1 rất nhiều.
Cho mạnh hỏi thêm chút là tại sao người ta ko viết DLL như bài 1 đi cho tiện mà phải viết thêm ActiveX DLL chi cho nó mất công ra
Phải chăng nó có cái khác biệt với bài 1 nên bắt buột phải viết ActiveX DLL
Thì mới tốt cho mục đích của người viết
 
Upvote 0
Cho mạnh hỏi thêm chút là tại sao người ta ko viết DLL như bài 1 đi cho tiện mà phải viết thêm ActiveX DLL chi cho nó mất công ra
Phải chăng nó có cái khác biệt với bài 1 nên bắt buột phải viết ActiveX DLL
Thì mới tốt cho mục đích của người viết

Hai công nghệ khác nhau. DLL như bài 1 là cách viết API, các thư viện của Windows phần lớn là loại này như User32.dll, Kernerl32.dll, gdi32.dll,... Loại DLL này dùng để xử lý tác vụ, thọc và xử lý các chức nang tạm nghĩ như là độc lập.

ActiveX DLL là làm việc theo Object, nó dùng công nghệ COM để giao tiếp. Công nghệ COM chỉ có trong Windows, anh Bill yêu cầu rất rắc rối, phải được quản lý trong Registry vì thế mới phải đăng ký bằng lệnh Regsvr32. Loại ActiveX DLL là nền tảng kiến thức và cách giao tiếp đối tượng nên mới có hai loại như vậy. Ý kiến cá nhân của tôi thì anh Bill tạo COM là hay nhưng quản lý với Registry lại là lắm phiền phức, thôi lịch sử là vậy.
 
Upvote 0
Anh Nguyễn Duy Tuân
nếu được anh cho em hỏi xíu nhé. Trong Delphi mình viết hàm Lồng vào câu lệnh SQL được không anh ?
 
Upvote 0
Upvote 0
em thử viết cái UDF STT mà nó báo lỗi Value# hic khong biết làm cách nào đây để lòng vào câu Select hichic
Không nên viết hàm STT thẳng vào SQL vì nó rất phức tạp. Bạn nên tạo mãng, thêm cột STT rồi gán nó xuống Sheet.
 
Upvote 0
Không nên viết hàm STT thẳng vào SQL vì nó rất phức tạp. Bạn nên tạo mãng, thêm cột STT rồi gán nó xuống Sheet.
như vậy không ôn lắm anh, em tập viết để sau này có viết thêm Concat, ý em là để nó xử lý trong SQL cho tiện. Mà không biết bắt đầu từ đâu ><<...,(@$%@
 
Upvote 0
Upvote 0
""":::":\ Anh học phép thuật ở đâu chỉ em với '''''''''''''''''',
Cái hàm RowNum em có thể phù phép hô biến chứ cái hàm Cancat chưa phù phép được ===\.

Em search youtube "group_concat + BS_SQL " sẽ thấy tôn ngộ không phải lác mắt :D


Phép thuật này khó lắm nên anh chỉ khoe thôi :D
 
Upvote 0
đang nghiên cứu mở rộng cái hàm mảng kia à
còn cái Redim làm ok rồi chứ ???
Heeee em chưa làm Redim mà em nghĩ đơn giản thôi.

Cái hàm group_concat hãy đợi đấy em đang tu luyện phép thuật hẹn 1 ngày không xa nữa hy vọng nghiệm ra được :;;;:::
 
Upvote 0
Heeee em chưa làm Redim mà em nghĩ đơn giản thôi.

Cái hàm group_concat hãy đợi đấy em đang tu luyện phép thuật hẹn 1 ngày không xa nữa hy vọng nghiệm ra được :;;;:::
thì ra là vậy đang mò cái group gống Atools ............ tự làm khổ mình thế hả :p:p:p

đam mê là thế .... nhiều khi Mạnh cố làm 1 cái gì đó mà khó quá là nó cứ văng ra .... xong bỏ kệ bà nó ... nhưng lâu lâu ngó một tẹo
Rồi một ngày kia .... hóa ra mày cũng thường thôi thì ra mày là vầy ===\._)()(-

Khi quá trình tích lũy về lượng đạt đến 1 điểm giới hạn thì chất sẻ thay đổi vậy ???!!! lúc đó mới nhìn ra vấn đề của nó
 
Upvote 0
như vậy không ôn lắm anh, em tập viết để sau này có viết thêm Concat, ý em là để nó xử lý trong SQL cho tiện. Mà không biết bắt đầu từ đâu ><<...,(@$%@
Ý mình là xử lý cái cột STT này ở bên ngoài, nó sẽ không ảnh hưởng gì nhiều đến câu lệnh SQL của bạn.
 
Upvote 0
Web KT
Back
Top Bottom