VbaTools – Bộ công cụ mở rộng cho VBA trong Excel (3 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

  • Tôi tuân thủ nội quy khi đăng bài

    phuongnam366377

    Thành viên hoạt động
    Tham gia
    25/10/19
    Bài viết
    157
    Được thích
    180
    # ✨ VbaTools – Bộ công cụ mở rộng cho VBA trong Excel
    Bạn làm việc nhiều với **VBA trong Excel**?
    Chắc hẳn đã từng gặp những tình huống: muốn **ẩn code**, muốn **khóa VBA Project**, hoặc bị lỗi **file tải về bị Windows chặn**…
    Với **VbaTools (32-bit & 64-bit)**, bạn có thêm những tiện ích hỗ trợ giúp quản lý VBA Project trong Excel thuận tiện hơn.
    ---
    ## Ẩn và phục hồi Module/Class
    * **HideVBAModules** – Ẩn toàn bộ Module & Class để bảo vệ mã nguồn.
    * **RestoreVBAModules** – Phục hồi lại khi cần chỉnh sửa.
    Thích hợp khi bạn phát hành file Excel cho người dùng mà không muốn họ xem code trực tiếp.
    ---
    ## ️ Khóa & Mở khóa VBA Project
    * **LockVBAProject** – Tự động khóa VBAProject.
    * **UnlockVBAProject** – Mở khóa dễ dàng khi bạn cần hiệu chỉnh.
    Tiện cho việc phân phối ứng dụng Excel, tránh bị sao chép mã trái phép.
    ---
    ## Gỡ chặn File & Folder
    * **UnblockFile** – Gỡ trạng thái *Blocked* khi mở file tải từ Internet.
    * **UnblockFolder** – Gỡ chặn hàng loạt file trong một thư mục.
    * ️ **UnblockFolderExt** – Gỡ chặn theo phần mở rộng (ví dụ: \*.xlsm, \*.xlam…).
    Không còn cảnh mở file báo *Security Warning* phiền toái.
    ---
    ## Kiểm tra nguồn gốc file
    * **GetFileSourceURL** – Xem file Excel được tải về từ đâu.
    Hữu ích khi bạn muốn xác minh độ tin cậy của file.
    ---
    ## Ưu điểm nổi bật
    ✅ Hỗ trợ cả **Excel 32-bit và 64-bit**
    ✅ Dễ dàng gọi trực tiếp từ **Excel VBA**
    ✅ Giúp bảo vệ & xử lý VBA Project thuận tiện hơn
    ✅ Tiện lợi cho lập trình viên khi phát triển và phân phối ứng dụng Excel
    ---
    ## Ví dụ minh họa

    Mã:
    Sub DemoVbaTools()
        Dim f As String
        f = "C:\Users\Admin\Desktop\Demo.xlsm"
      
        ' Ẩn Module
        Call HideVBAModules(StrPtr(f), StrPtr("MyKey123"))
      
        ' Khóa Project
        Call LockVBAProject(StrPtr(f))
      
        ' Gỡ chặn File
        Call UnblockFile(StrPtr(f))
      
        ' Kiểm tra nguồn gốc
        MsgBox GetFileSourceURL(f)
    End Sub

    ⚠️ **Lưu ý quan trọng**
    * Các tính năng trên chỉ áp dụng cho **Microsoft Excel (VBA)**.
    * Nếu mở bằng **OpenOffice hoặc LibreOffice**, module và class có thể vẫn hiển thị vì những nền tảng đó không tuân theo cơ chế bảo mật VBA của Excel.
    ---
    Với **VbaTools**, bạn có thêm **bộ công cụ hỗ trợ hữu ích** cho việc quản lý và triển khai ứng dụng VBA trong **Excel**.
    ---
    ### Ghi chú
    ✍️ *Tài liệu được biên soạn với sự hỗ trợ từ ChatGPT.*
    *Cùng ChatGPT viết nên tài liệu này.*


    lâu lắm rồi không vào chơi nay rảnh úp cho ai cần thì sử dụng

    giới thiệu kèm trên github.com
     

    File đính kèm

    Lần chỉnh sửa cuối:
    # ✨ VbaTools – Tag & Verify cho File Excel (.xlsx)

    Bạn có thường xuyên phải chia sẻ file Excel và lo ngại về việc **file bị chỉnh sửa trái phép**?
    Với **VbaTools (32-bit & 64-bit)**, bạn có thể **gắn nhãn (Tag)** và **xác minh (Verify)** file Excel định dạng **.xlsx** ngay trong VBA, đảm bảo nguồn gốc và tính toàn vẹn của file.

    ---

    ## ️ Chức năng chính

    * **TagExcelFileAPI** – Ghi nhãn (Identity) vào file `.xlsx` bằng khóa bí mật (SecretKey).
    * **ReadTaggedIdentityAPI** – Đọc lại thông tin đã gắn trong file.
    * **VerifyExcelTagAPI** – Xác minh xem file còn nguyên vẹn hay đã bị thay đổi.

    ---

    ## Ví dụ sử dụng

    Mã:
    Option Explicit
    
    #If VBA7 And Win64 Then
        ' 64-bit Excel
        Declare PtrSafe Function TagExcelFileAPI Lib "VbaTools64.dll" _
            (ByVal FilePath As LongPtr, ByVal SecretKey As LongPtr, ByVal Identity As LongPtr) As Long
        Declare PtrSafe Function VerifyExcelTagAPI Lib "VbaTools64.dll" _
            (ByVal FilePath As LongPtr, ByVal SecretKey As LongPtr) As Long
        Declare PtrSafe Function ReadTaggedIdentityAPI Lib "VbaTools64.dll" _
            (ByVal FilePath As Variant) As Variant
    #Else
        ' 32-bit Excel
        Declare Function TagExcelFileAPI Lib "VbaTools32.dll" _
            (ByVal FilePath As Long, ByVal SecretKey As Long, ByVal Identity As Long) As Long
        Declare Function VerifyExcelTagAPI Lib "VbaTools32.dll" _
            (ByVal FilePath As Long, ByVal SecretKey As Long) As Long
        Declare Function ReadTaggedIdentityAPI Lib "VbaTools32.dll" _
            (ByVal FilePath As Variant) As Variant
    #End If
    
    ' --- Ghi nhãn thông tin ---
    Sub TestTagExcel()
        Dim FilePath As String, SecretKey As String, Identity As String
        FilePath = "D:\Test.xlsx"
        SecretKey = "MatKhauBiMat123"
        Identity = "CreatedBy=Kieu Manh;Date=2025-08-26"
        
        If TagExcelFileAPI(StrPtr(FilePath), StrPtr(SecretKey), StrPtr(Identity)) = 0 Then
            MsgBox "✅ Ghi tag thành công!"
        Else
            MsgBox "❌ Lỗi khi ghi tag!"
        End If
    End Sub
    
    ' --- Đọc thông tin ---
    Sub TestReadIdentity()
        Dim Result As Variant
        Result = ReadTaggedIdentityAPI("D:\Test.xlsx")
        
        If IsNull(Result) Then
            Debug.Print "❌ Không đọc được Identity"
        Else
            Debug.Print "✅ Identity = " & Result
        End If
    End Sub
    
    ' --- Xác minh file ---
    Sub TestVerifyTag()
        Dim Result As Long
        Result = VerifyExcelTagAPI(StrPtr("D:\Test.xlsx"), StrPtr("MatKhauBiMat123"))
        
        Select Case Result
            Case 0: MsgBox "✅ File hợp lệ, không bị chỉnh sửa!"
            Case 2: MsgBox "⚠️ File đã bị thay đổi hoặc sai nguồn!"
            Case Else: MsgBox "❌ Lỗi kiểm tra!"
        End Select
    End Sub

    ## ⚠️ Lưu ý quan trọng

    * Tính năng này **chỉ áp dụng cho file Excel định dạng `.xlsx`**.
    * Nếu lưu lại bằng **Save As** sang định dạng khác (`.xlsb`, `.xlsm`…), thì **thông tin Tag sẽ bị mất**.
    * Luôn phát hành và xác minh file dưới định dạng `.xlsx`.

    ---

    Nội dung & ví dụ minh họa được hỗ trợ biên soạn bởi ChatGPT.
     
    thấy vài năm trước rồi mà hình như ẩn xong chưa viết được hàm Show lại thì phải

    nó đơn giản lắm khi ẩn chỉnh sửa gì thì khi hiện trả lại nó là được

    Nguyên tắc chỉnh sửa làm gì thì làm không làm hỏng file và lỗi file khi mở lên lần đầu tiên xem như code đạt yêu cầu

    còn cố tính làm hỏng file hay biến file Excel không ra Excel và ra cái file nữa mùa thì thôi xem xét lại cách viết code
     
    thấy vài năm trước rồi mà hình như ẩn xong chưa viết được hàm Show lại thì phải

    nó đơn giản lắm khi ẩn chỉnh sửa gì thì khi hiện trả lại nó là được
    Mình viết xong lâu rồi giờ chuyển qua Delphi nâng cấp code lại !
    Bài đã được tự động gộp:

    thấy vài năm trước rồi mà hình như ẩn xong chưa viết được hàm Show lại thì phải

    nó đơn giản lắm khi ẩn chỉnh sửa gì thì khi hiện trả lại nó là được

    Nguyên tắc chỉnh sửa làm gì thì làm không làm hỏng file và lỗi file khi mở lên lần đầu tiên xem như code đạt yêu cầu

    còn cố tính làm hỏng file hay biến file Excel không ra Excel và ra cái file nữa mùa thì thôi xem xét lại cách viết code
    Bạn unhide module file của người khác được khi không ?
     
    ai ẩn thì người đó làm hiện lại Tôi chỉ viết ẩn và hiện cho các hàm của tôi file bài số 1

    File bài số 1 ẩn Module + Class Module xong hiện lại Với key hay pass tuỳ theo cách ai thích keo gì thì keo = trả quan tâm

    còn trả quan tâm ai ẩn xong keo người khác dò hiện lại làm gì mất thời gian .... chuyển vào sọt rác
     
    Không ý mình là tool bạn ẩn và bỏ ẩn cho file từ tool bạn tạo ra hay còn có thể bỏ ẩn module cho bất kì file nào ?
     

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

    Back
    Top Bottom