Thực sự bây giờ bạn nói thế này thì tớ không biết được đâu bạn ạ. Tớ chỉ có thể hướng dẫn bạn kết nối với Excel từ Visual Basic thôi bạn ạ.
[quote]Đây là những kiến thức cơ bản trong việc điều khiển Excel từ VB6 thông qua thư viện liên kết động DLL và EXE. Đây là hướng phát triển rất hay khi bạn đã đạt được những kiến thức nhất định về VBA và cần phải bảo vệ thành quả của mình không bị bẻ khoá. Nội dung này tôi dịch từ "Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft® Excel and VBA®
By Stephen Bullen, Rob Bovey, John Green". Tôi cũng đã test lại cẩn thận rồi! , chúng ta sẽ tìm hiểu dần dần... Nắm được nội dung này bạn sẽ hiểu hơn một số ví dụ do anh Tuân đã post lên diễn đàn.
Trước khi tìm hiểu công việc này, bạn biết rằng Visual Basic 6.0 (VB 6.0) được xây dựng bởi tập đoàn Microsoft. Hiện này VB 6.0 đã được thay thế bởi VB.NET, tuy nhiên VB 6.0 vẫn là phần mềm được nhiều nhà lập trình sử dụng rộng rãi nhất trên thế giới. VB 6.0 mạnh mẽ hơn người anh em VBA vì VB 6.0 là ngôn ngữ lập trình hoạt động mang tính độc độc lập. Nhìn chung nội dung, cấu trúc, mã lệnh trong thủ tục của VB 6.0 và VBA rất giống nhau. Vì vậy, đối với những người am hiểu về VBA thì có thể nhanh chóng tiếp cận và sử dụng VB 6.0.
Chương này sẽ chỉ dẫn bước đầu tạo mối liên kết giữa Excel với VB 6.0 và những lý do tại sao sử dụng VB 6.0 cho các dự án VBA của bạn. VB 6.0 có thể tạo ra hơn 6 kiểu ứng dụng, nhưng chỉ có hai kiểu liên kết được với Excel là ActiveX DLL và Standard EXE. Mục này sẽ hướng dẫn bạn cách sử dụng ActiveX DLL và Standard EXE trong VB 6.0 cho Excel với ứng dụng đơn giản “Hello World”. Chúng ta sẽ khám phá sự liên kết giữa Excel và Standard EXE trong mục tiếp theo.
Như vậy bạn sẽ thắc mắc tại sao cần phải sử dụng VB 6.0 trong khi đó VBA sẵn có trong Excel?! VB 6.0 có một số khả năng mà VBA không có như khả năng biên dịch code trong form của DLL (Dynamic Link Library - Thư viện liên kết động), tạo file hoạt động một cách độc lập, đóng gói form, khả năng lập trình hướng đối tượng cao hơn, hỗ trợ các thư viện tài nguyên,... Ngoài ra khả năng điều khiển mảng dữ liệu liên liên kết được tăng cường hơn so với VBA. Dưới đây là những nét chính để bạn quyết định có nên sử dụng VB 6.0 để liên kết với Excel hay không?!
- Khả năng bảo mật code: VBA có khả năng bảo mật code để chống người khác có thể xem bằng cách sử dụng mã khoá cho dự án VBA của bạn. Điều đó là cần thiết khi bạn đã bỏ công sức để xây dựng sản phẩm của mình. Tuy nhiên hiện nay có rất nhiều chương trình có thể dò tìm và phá được khóa, khi đó code sẽ được hiện ra. Dự án của bạn lúc đó rất dễ bị phân tán để mọi người sử dụng. Nguyên nhân là do VBA không biên dịch được code, điều đó không thể ngăn chặn được người khác truy cập vào.
- Sử dụng VB 6.0 Form nâng cao: Form được đóng gói trong VB 6.0 so với sử dụng trong VBA. Đối tượng Form được tạo trong ứng dụng Excel được gọi là MSForm, còn trong VB 6.0 thì được hiểu là Ruby Form. Sự giống nhau về bên ngoài giữa chúng là Form ban đầu đều trống rỗng để bạn có thể xây dựng, di chuyển các điều khiển trong Form. Ngoài ra các điều khiển trong cả hai kiểu đều sử dụng các sự kiện xả ra với nó để thi hành thủ tục. Đương nhiên giữa chúng có sự khác nhau, ví dụ như thuộc tính, phương thức, sự kiện và kể cả các điều khiển của VB 6.0 rộng hơn...
- Hỗ trợ điều khiển ActiveX tốt hơn: Không chỉ mỗi VB 6.0 Form cung cấp khả năng hỗ trợ tốt hơn so với UserForm của các điều khiển đa dạng xây dựng trong Window. Chúng còn có hàng trăm điều khiển ActiveX nhóm 3 mà không có đầy đủ cho UserForm. Lý do như trên là hầu hết điều khiển ActiveX nhóm 3 trở thành phiên bản 2. Khi bạn xây dựng dự án thì phiên bản bạn sử dụng được gọi là design-time version của điều khiển. Khi dự án của bạn được phân phối (distributed) và chạy trong trạng thái biên dịch thì được gọi là runtime version của điều khiển. Khi bạn có được điều khiển ActiveX nhóm 3, có nghĩa là bạn đã mua bản quyền để xây dựng VB 6.0 Form bằng cách sử dụng design-time version của điều khiển. Runtime version của điều khiển, là kết quả của VB 6.0 Form sau khi được biên dịch, có thể phân phối lại không bị hạn chế trong phần lớn các trường hợp. Đây là lý do không thể sử dụng trong tài nguyên design-time và việc đó không thể sử dụng để xây dựng dự án mới.
Ngược lại UserForm trong VBA được thiết kế ở dạng mở, như vậy runtime version của điều khiển ActiveX không hoạt động với chúng. Nếu bạn đã phân phối design-time version của điều khiển để chạy trong VBA UserForm không biên dịch, về cơ bản là bạn sẽ gửi điều khiển đó cho người khác một cách miễn phí. Ai đó mà có design-time version của điều khiển được cài đặt trong máy tính thì có thể sử dụng những dự án đó, ngoài ra họ phải mua hoặc không sử dụng được.Ứng dụng Active DLL “Hello World” sẽ giải thích cho bạn cách một cách tạo liên kết từ Excel tới DLL. Chúng ta sẽ mở rộng ví dụ trên theo cách thứ hai. Excel sẽ liên kết với DLL và DLL sẽ liên kết trở lại với Excel. Tiếp theo chúng ta sẽ nghiên cứu cách sử dụng Form của VB 6.0 như là UserForm sẵn có trong Excel. [/quote]
Bạn tham khảo tiếp trong link này nhé! [blue]http://www.giaiphapexcel.com/forum/showthread.php?t=6815[/blue]