Bạn trưng lên cho mọi người tham khảo đi
Trong VBA thì Install addin bằng câu lệnh: Addins(Addin_Name).Installed=True. Nếu file Addins được tạo từ 1 workbook có đặt pass open thì khi thực hiện lệnh này bắt buộc phải nhập pass, mà tìm mãi không được cách tự động set pass, thực hiện bằng tay thì quá dở.
Còn trong VB.Net thì thực hiện như mở workbook trong VBE:
Dim XlApp as Excel.Application
Dim xlWb as Excel.Workbook
xlApp= New Excel.Application
xlWb=xlApp.Workbooks.Open(FileName:=Full_File_Name, Password:=Password_Protect_Workbook
Mục đích của tôi chỉ là thêm bức tường bảo vệ cho dự án VBA khỏi những người nghiệp dư (như tôi). Việc phá pass bảo vệ code VBA bằng đọc mã Hex thì đơn giản rồi, nhưng không có pass open thì không Install Addins được, đồng nghĩa với việc không xem được code VBA. Cơ mà đang đau đầu vì .exe tạo bằng vb.net lại quá dễ xem code. Mã hóa bằng phần mềm free chả ăn thua vì lỗi tùm lum, lúc được lúc không.
So sánh VBE và VB.Net thì thấy môi trường VB.Net rộng hơn rất nhiều, do đó đòi hỏi các đối tượng phải khai báo tường mình hơn. Trong VBE thì nhiều đối tượng được lược bỏ do tự hiểu là đang trong môi trường đó rồi. Còn trong VB.net bắt buộc phải khai báo đầy đủ.
VD: Trong VBE thực hiện câu lệnh Range("A1").Value=1 thì tự nó hiểu là Application là Excel, Workbook là ActiveWorkbook, Worksheet là ActiveWorksheet. Nhưng trong VB.Net bắt buộc phải khai báo Excel.Application, Excel.Workbook, Excel.Worksheet. Thậm chí để có thể thâm nhập môi trường excel phải khai báo Import Excel=Microsoft.Office.Interop.Excel. Và để khai báo được Namespace này thì còn phải thêm thư viện tham khảo bằng cách Add Reference COM Microsoft.Excel 14.0 Ọbject Library.
Nói chung là rắc rối hơn khác nhiều, nhưng từ làm việc với VB.Net làm cái đầu thoáng hơn nhiều, rộng hơn nhiều.