Tạo mật khẩu cài đặt Add-in

Liên hệ QC

vanmanhvcu

Thành viên chính thức
Tham gia
27/3/11
Bài viết
85
Được thích
10
Chào tất cả mọi người
Tôi có tạo 1 Add-in để lưu các UDF và Sub vào đó tiện cho việc sử dụng sau này
Nhưng tôi muốn tạo mật khẩu để mỗi khi cài đặt Addin trên máy tính.
Vậy có cách nào tạo mật khẩu mỗi khi người dùng thực hiện cài thì sự kiện Private Sub_Workbook AddinInstall() sẽ yêu cầu nhập đúng mật khẩu mới cho phép sử dụng Add-in ???
 
Chào tất cả mọi người
Tôi có tạo 1 Add-in để lưu các UDF và Sub vào đó tiện cho việc sử dụng sau này
Nhưng tôi muốn tạo mật khẩu để mỗi khi cài đặt Addin trên máy tính.
Vậy có cách nào tạo mật khẩu mỗi khi người dùng thực hiện cài thì sự kiện Private Sub_Workbook AddinInstall() sẽ yêu cầu nhập đúng mật khẩu mới cho phép sử dụng Add-in ???
Không thể nào nếu đó là mật khẩu mở file
 
Chào tất cả mọi người
Tôi có tạo 1 Add-in để lưu các UDF và Sub vào đó tiện cho việc sử dụng sau này
Nhưng tôi muốn tạo mật khẩu để mỗi khi cài đặt Addin trên máy tính.
Vậy có cách nào tạo mật khẩu mỗi khi người dùng thực hiện cài thì sự kiện Private Sub_Workbook AddinInstall() sẽ yêu cầu nhập đúng mật khẩu mới cho phép sử dụng Add-in ???
Tôi có cách này hơi củ chuối một chút nhưng hy vọng sẽ giúp ích cho bạn. Khi cài nó đòi key thì nhập GPE-ADMIN-GIAIPHAP
 

File đính kèm

Tôi có cách này hơi củ chuối một chút nhưng hy vọng sẽ giúp ích cho bạn. Khi cài nó đòi key thì nhập GPE-ADMIN-GIAIPHAP
Quá hay ! @giaiphap
tôi lại không biết là có thể dùng Ribbon.Invalidate để ẩn button đi
nhưng có 1 điều nữa là cách này có thể ẩn các Sub được gắn vào button nhưng các Function thì vẫn có thể sử dụng
Vậy có cách nào để handle nốt cái Function trong Add-in hay không?
 
Quá hay ! @giaiphap
tôi lại không biết là có thể dùng Ribbon.Invalidate để ẩn button đi
nhưng có 1 điều nữa là cách này có thể ẩn các Sub được gắn vào button nhưng các Function thì vẫn có thể sử dụng
Vậy có cách nào để handle nốt cái Function trong Add-in hay không?
Bạn thêm đoạn code này vào Module và test thử xem.
Mã:
Public Sub Sub_Test()
Dim aKey As Integer
    aKey = GetSetting("ToolsExcel", "ThietLap", "Key", 0)
        If aKey = 0 Then
            MsgBox "Xin loi ban khong co quyen chay sub nay"
        Else
            MsgBox "Ban vua cho chay sub"
        End If
End Sub

Public Function BinhPhuong(a As Long)
Dim aKey As Integer
    aKey = GetSetting("ToolsExcel", "ThietLap", "Key", 0)
        If aKey = 0 Then
            BinhPhuong = "Xin loi ban chua duoc cap quyen su dung ham nay"
        Else
            BinhPhuong = Sqr(a)
        End If
End Function
 
Quá hay ! @giaiphap
tôi lại không biết là có thể dùng Ribbon.Invalidate để ẩn button đi
nhưng có 1 điều nữa là cách này có thể ẩn các Sub được gắn vào button nhưng các Function thì vẫn có thể sử dụng
Vậy có cách nào để handle nốt cái Function trong Add-in hay không?
Nhưng cách này có an toàn không em nghĩ ko an toàn
 
Bạn thêm đoạn code này vào Module và test thử xem.
Mã:
Public Sub Sub_Test()
Dim aKey As Integer
    aKey = GetSetting("ToolsExcel", "ThietLap", "Key", 0)
        If aKey = 0 Then
            MsgBox "Xin loi ban khong co quyen chay sub nay"
        Else
            MsgBox "Ban vua cho chay sub"
        End If
End Sub

Public Function BinhPhuong(a As Long)
Dim aKey As Integer
    aKey = GetSetting("ToolsExcel", "ThietLap", "Key", 0)
        If aKey = 0 Then
            BinhPhuong = "Xin loi ban chua duoc cap quyen su dung ham nay"
        Else
            BinhPhuong = Sqr(a)
        End If
End Function
Cám ơn bác.
với mình như vậy là ổn.
Bài đã được tự động gộp:

Nhưng cách này có an toàn không em nghĩ ko an toàn
Vậy để an toàn hơn,
theo bạn nên làm thế nào? cho mình xin ý kiến.
 
Vô ích thôi bạn, bảo vệ = VBA thì chỉ dành cho những user bình thường, chứ với các cờ rắc cơ, họ bẻ cái 1.
 
Bạn thêm đoạn code này vào Module và test thử xem.
Mã:
Public Sub Sub_Test()
Dim aKey As Integer
    aKey = GetSetting("ToolsExcel", "ThietLap", "Key", 0)
        If aKey = 0 Then
            MsgBox "Xin loi ban khong co quyen chay sub nay"
        Else
            MsgBox "Ban vua cho chay sub"
        End If
End Sub

Public Function BinhPhuong(a As Long)
Dim aKey As Integer
    aKey = GetSetting("ToolsExcel", "ThietLap", "Key", 0)
        If aKey = 0 Then
            BinhPhuong = "Xin loi ban chua duoc cap quyen su dung ham nay"
        Else
            BinhPhuong = Sqr(a)
        End If
End Function
@giaiphap bác cho ý kiến nếu có thể set 1 Master Password và 1 user password
- Master Password sẽ luôn luôn dùng được cho mọi máy
- User Password sẽ chỉ sử dụng được trên duy nhất 1 máy tính. (mật khẩu được tạo ra từ Hardware ID của máy đó)
 
@giaiphap bác cho ý kiến nếu có thể set 1 Master Password và 1 user password
- Master Password sẽ luôn luôn dùng được cho mọi máy
- User Password sẽ chỉ sử dụng được trên duy nhất 1 máy tính. (mật khẩu được tạo ra từ Hardware ID của máy đó)
Được chứ, cứ việc code thôi, thậm chí 1 user chỉ dùng một số chức năng không dùng hết các chức năng vẫn được. cái quan trọng là code cho phù hợp thôi. Nhưng cho bạn một lời khuyên là code vba có tính bảo mật không cao.
 
Nếu viết code VBA thuần túy thì việc tạo key để kiểm tra các bạn chấp nhận tính rủi ro nếu ai đó cố tình hack. Xét cho cùng đến Windows, Office vẫn bị cơ mà :).
Có một cách có thể trên VBA chưa ai làm?/! Đó là mô hình client-server. Phía máy chủ lưu file có code VBA đầy đủ. Máy khách kết nối đến máy chủ, gọi thủ tục trên máy chủ máy chủ rồi nhận kết quả. Như vậy phía máy khách code chỉ có một vài dòng lệnh gọi mà thôi, như là

Kết quả = Xnet.RunMacroInServer("Tên tập tin Excel có VBA.xls","Tên hàm", các tham số nếu có)

Phương pháp này lập trình hoàn toàn bằng VBA.
Phương pháp này thì bạn chỉ cần bảo mật phía máy chủ, file excel ở mọi nơi không lo lộ code và bạn có thể kiểm tra được license máy khách, quy định dùng trong bao lâu thì không cho.... Cách này bạn phải dùng một ứng dụng có bản quyền khác ngoài Excel.
 
Được chứ, cứ việc code thôi, thậm chí 1 user chỉ dùng một số chức năng không dùng hết các chức năng vẫn được. cái quan trọng là code cho phù hợp thôi. Nhưng cho bạn một lời khuyên là code vba có tính bảo mật không cao.
@giaiphap @Nguyễn Duy Tuân
nghe nói .xll bảo mật cao hơn, nhưng tôi không biết về cách này, mong các bác chia sẻ
1. trên GPE có bài viết nào hướng dẫn chi tiết cách tạo Add-in .xll này không ? nếu có xin chỉ giúp !
2. tạo Add-in .xll có thể được viết code = Visual Basic không? hay bắt buộc viết = C++, Delphi … tôi chỉ biết về Visual Basic thôi
3. Add-in .xll có thể thêm Customs ribbon như .xlam không?
 
VB không viết được xll bạn à. Chính thống được MS support là dùng C/C++ với bộ IDE Visual Studio.
xll bản chất chỉ là các native dll. Thằng nào tạo native dll được thì viết xll được.
 
Lần chỉnh sửa cuối:
@giaiphap @Nguyễn Duy Tuân
nghe nói .xll bảo mật cao hơn, nhưng tôi không biết về cách này, mong các bác chia sẻ
1. trên GPE có bài viết nào hướng dẫn chi tiết cách tạo Add-in .xll này không ? nếu có xin chỉ giúp !
2. tạo Add-in .xll có thể được viết code = Visual Basic không? hay bắt buộc viết = C++, Delphi … tôi chỉ biết về Visual Basic thôi
3. Add-in .xll có thể thêm Customs ribbon như .xlam không?
Cái vụ này bạn tham khảo anh @Nguyễn Duy Tuân tui thì cái vụ XLL quá sức của tui rồi.
 
Cái vụ này bạn tham khảo anh @Nguyễn Duy Tuân tui thì cái vụ XLL quá sức của tui rồi.
Câu hỏi 1 và 3 của tôi vẫn chưa rõ câu trả lời thế nào?
Nếu có website nào hướng dẫn chi tiết thì càng tốt, Tiếng Anh thì cũng đọc được nhưng lâu hơn, còn Tiếng Việt hướng dẫn thì càng tốt :p
 
@giaiphap @Nguyễn Duy Tuân
nghe nói .xll bảo mật cao hơn, nhưng tôi không biết về cách này, mong các bác chia sẻ
1. trên GPE có bài viết nào hướng dẫn chi tiết cách tạo Add-in .xll này không ? nếu có xin chỉ giúp !
2. tạo Add-in .xll có thể được viết code = Visual Basic không? hay bắt buộc viết = C++, Delphi … tôi chỉ biết về Visual Basic thôi
3. Add-in .xll có thể thêm Customs ribbon như .xlam không?

XLL sẽ cần thiết khi bạn muốn viết hàm UDF (hàm tự tạo dùng trên sheet). CÒn bạn viết ứng dụng để chạy lệnh thì không cần phải XLL. Bạn tạo DLL cũng được. Tôi gửi cho bạn một cánh dùng Delphi để tạo Native DLL, hoặc ActiveX DLL (mặc dù bạn vẫn có lựa chọn khác như .NET).
Trong kênh Youtube của tôi có 4 bài học cho người mới tiếp cận đó, bạn xem rồi tự học tiếp nếu thấy hứng thú.
 
Web KT

Bài viết mới nhất

Back
Top Bottom