VbaTools – Bộ công cụ mở rộng cho VBA trong Excel (1 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
170
Được thích
190
# ✨ 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 ?
 
rảnh thử viết hàm Show lại xem nó đơn giản thôi theo nguyên tắc

1/ khi dùng HxD mở lên ban đầu là bản gốc chưa chỉnh sửa

2/ khi chỉnh sủa thay thế cái gì nhớ lại cái đó

3/ phục hồi thay thế chỗ chỉnh sửa mục số 2 trả lại mục số 1 là xong
 
tool mình thì mở được tất
rảnh thử viết hàm Show lại xem nó đơn giản thôi theo nguyên tắc

1/ khi dùng HxD mở lên ban đầu là bản gốc chưa chỉnh sửa

2/ khi chỉnh sủa thay thế cái gì nhớ lại cái đó

3/ phục hồi thay thế chỗ chỉnh sửa mục số 2 trả lại mục số 1 là xong
cho Bạn hay cho mình ?
 
Mình mới xem qua file bạn có một lỗi là sau khi ẩn module xong và lưu file lại và mở lên code vba sẽ bị mất hoặc không chạy được !
Bài đã được tự động gộp:

*chú ý: file phải lưu được và mở lại sau lưu bình thường mới ok nha bạn.
 
Mình mới xem qua file bạn có một lỗi là sau khi ẩn module xong và lưu file lại và mở lên code vba sẽ bị mất hoặc không chạy được !

*chú ý: file phải lưu được và mở lại sau lưu bình thường mới ok nha bạn.
1/ Tôi mới kiểm tra lại xong nó lỗi phần Class xong kéo theo làm lỗi Module ... bạn thử lại xóa hết Class đi xong chỉ còn module ẩn lại và thử là OK

Cái này tôi sẽ viết lại khi xem còn lỗi nào khác xong tổng hợp lại úp lại bài số 1 sau


2/ còn chú ý của bạn tôi không hiểu bạn nói gì luôn vì khi ẩn xong tôi mở file lên gõ hàm trên Cells chạy tốt ( không báo lỗi khi mở file lên xem như OK )

3/ Úp tools của bạn lên đây tôi thử chơi ẩn và hiện tí xem có gì khác biệt xong tính tiếp ... chơi cho vui thôi còn VBA mật mỡ gì đâu
 
Lần chỉnh sửa cuối:
1/ Tôi mới kiểm tra lại xong nó lỗi phần Class xong kéo theo làm lỗi Module ... bạn thử lại xóa hết Class đi xong chỉ còn module ẩn lại và thử là OK

Cái này tôi sẽ viết lại khi xem còn lỗi nào khác xong tổng hợp lại úp lại bài số 1 sau


2/ còn chú ý của bạn tôi không hiểu bạn nói gì luôn vì khi ẩn xong tôi mở file lên gõ hàm trên Cells chạy tốt ( không báo lỗi khi mở file lên xem như OK )

3/ Úp tools của bạn lên đây tôi thử chơi ẩn và hiện tí xem có gì khác biệt xong tính tiếp ... chơi cho vui thôi còn VBA mật mỡ gì đâu
Nào rảnh mình gửi file demo cho !
 
Thank bác rất rất nhiều.
 
1756946760874.png
vẫn xóa kể cả cho tải xuống thì Windows cũng xóa. ...

bạn viết trên Delphi hay C# ... nếu viết trên C# xong dùng mấy thứ pack tào lao hay bị báo virus thậm chí dính virus thì bỏ đi

rảnh học C++ hay Delphi mà viết thự viện lõi xong viết Exe C# hay bất cứ ngôn ngữ hiện đại nào mà call không lo dính virus hay báo virus giả

còn dân code két viết trên bất cứ cái gì mà keo khách hàng tắt trình diệt virus đi thì xem lại chính cách viết của mình và ứng dụng đó có siêu hay thì

cũng nên chuyển vào sọt rác
 
View attachment 309507
vẫn xóa kể cả cho tải xuống thì Windows cũng xóa. ...

bạn viết trên Delphi hay C# ... nếu viết trên C# xong dùng mấy thứ pack tào lao hay bị báo virus thậm chí dính virus thì bỏ đi

rảnh học C++ hay Delphi mà viết thự viện lõi xong viết Exe C# hay bất cứ ngôn ngữ hiện đại nào mà call không lo dính virus hay báo virus giả

còn dân code két viết trên bất cứ cái gì mà keo khách hàng tắt trình diệt virus đi thì xem lại chính cách viết của mình và ứng dụng đó có siêu hay thì

cũng nên chuyển vào sọt rác
Do la Delphi ko pack
 
vậy xem lại cấu trúc viết hàm và cách sử dụng các thư viện Delphi

ai cũng vậy cả viết DLL hay Exe báo có vài em virus là hoàn toàn bình thường vì có khi trình quét Virus cùi báo giả

còn bị xóa là thua hay báo trên 10 Em đỏ hết cả lên họ thấy cũng nhột vậy nên cố giắng có báo từ 5 Em virus trở xuống và không xóa xem như tốt rồi

và sạch Virus lại quá tốt ... vọc đi ngộ ra thôi khi kiểm tra diết thấy báo gì là hình dụng ra hàm nào báo xong chỉnh lại là ok
.....................

Tôi đang đào sâu thêm chủ để này một tí là viết trình phân tích vbaProject.bin

còn ẩn và hiện Module các hàm do tôi viết nó quá tầm thường rồi ... tạm xếp vào xó ... rảnh tôi úp lại file bài số 1 khi tổng hợp hết các lỗi
 
vậy xem lại cấu trúc viết hàm và cách sử dụng các thư viện Delphi

ai cũng vậy cả viết DLL hay Exe báo có vài em virus là hoàn toàn bình thường vì có khi trình quét Virus cùi báo giả

còn bị xóa là thua hay báo trên 10 Em đỏ hết cả lên họ thấy cũng nhột vậy nên cố giắng có báo từ 5 Em virus trở xuống và không xóa xem như tốt rồi

và sạch Virus lại quá tốt ... vọc đi ngộ ra thôi khi kiểm tra diết thấy báo gì là hình dụng ra hàm nào báo xong chỉnh lại là ok
.....................

Tôi đang đào sâu thêm chủ để này một tí là viết trình phân tích vbaProject.bin

còn ẩn và hiện Module các hàm do tôi viết nó quá tầm thường rồi ... tạm xếp vào xó ... rảnh tôi úp lại file bài số 1 khi tổng hợp hết các lỗi
Vấn đề ẩn module của bạn chưa hoàn toàn hoàn thiện đâu như mình đã nói ở trên từ từ bạn sẽ nghiệm ra .
 
Vấn đề ẩn module của bạn chưa hoàn toàn hoàn thiện đâu như mình đã nói ở trên từ từ bạn sẽ nghiệm ra .
1/ chưa hoàn thiện vậy chi tiết là gì ... file bài 1 chỉ lỗi Phần Class nếu xóa Class đi ẩn và hiện sử dụng tốt ... vậy chưa chỗ nào nữa

2/ làm gì thì làm khi xử lý file mở lên không báo lỗi hay làm hòng File xem như code OK

3/ còn hay mà làm lỗi khi mở lên lần đầu hay làm hỏng file không ra file ra cái thứ gì đó xem như chuyển vào sọt rác ... ai viết cũng vậy thôi ko cần lý giải hay biện minh là nó lỗi nhưng vẫn sử dụng Tốt ???!!!

4/ Tiện đây tôi viết nhanh Exe chỉ ẩn và hiện Module theo App của Tôi không ẩn Class không báo virus hay xóa File .. viết trên Delphi

1756957372733.png

Úp cho ai cần thì dùng còn File bài số 1 nếu ai dùng xóa Class đi nếu không xóa là lỗi sử dụng

Cách tạm xử lý là nếu có Class lưu vào đâu đó sau khi ẩn Module xong thì Import lại nó là xong

Khi thống kê xong mọi cái sẽ chỉnh sửa File bài số 1 sau
 

File đính kèm

1/ chưa hoàn thiện vậy chi tiết là gì ... file bài 1 chỉ lỗi Phần Class nếu xóa Class đi ẩn và hiện sử dụng tốt ... vậy chưa chỗ nào nữa

2/ làm gì thì làm khi xử lý file mở lên không báo lỗi hay làm hòng File xem như code OK

3/ còn hay mà làm lỗi khi mở lên lần đầu hay làm hỏng file không ra file ra cái thứ gì đó xem như chuyển vào sọt rác ... ai viết cũng vậy thôi ko cần lý giải hay biện minh là nó lỗi nhưng vẫn sử dụng Tốt ???!!!

4/ Tiện đây tôi viết nhanh Exe chỉ ẩn và hiện Module theo App của Tôi không ẩn Class không báo virus hay xóa File .. viết trên Delphi

View attachment 309512

Úp cho ai cần thì dùng còn File bài số 1 nếu ai dùng xóa Class đi nếu không xóa là lỗi sử dụng

Cách tạm xử lý là nếu có Class lưu vào đâu đó sau khi ẩn Module xong thì Import lại nó là xong

Khi thống kê xong mọi cái sẽ chỉnh sửa File bài số 1 sau
Bạn chỉ cần làm theo các bước sau sẽ thấy !
-ẩn module xong mở file và lưu lại .
-mở lại file đó xem code còn không hoặc chạy được code không !
 
Bạn chỉ cần làm theo các bước sau sẽ thấy !
-ẩn module xong mở file và lưu lại .
-mở lại file đó xem code còn không hoặc chạy được code không !
Thử lại File bài số 23 đi tôi ẩn xong mở file lên không lỗi xong gõ linh tinh lên đó xong lưu lại OK

xong từ .xlsm Save As sang .xlsb OK ... xong mở lại File sử dụng OK

vậy còn sai gì nữa hay sai bài Số 1 có Class làm lỗi đã nói mấy bài rồi ???
 
1/ chưa hoàn thiện vậy chi tiết là gì ... file bài 1 chỉ lỗi Phần Class nếu xóa Class đi ẩn và hiện sử dụng tốt ... vậy chưa chỗ nào nữa

2/ làm gì thì làm khi xử lý file mở lên không báo lỗi hay làm hòng File xem như code OK

3/ còn hay mà làm lỗi khi mở lên lần đầu hay làm hỏng file không ra file ra cái thứ gì đó xem như chuyển vào sọt rác ... ai viết cũng vậy thôi ko cần lý giải hay biện minh là nó lỗi nhưng vẫn sử dụng Tốt ???!!!

4/ Tiện đây tôi viết nhanh Exe chỉ ẩn và hiện Module theo App của Tôi không ẩn Class không báo virus hay xóa File .. viết trên Delphi

View attachment 309512

Úp cho ai cần thì dùng còn File bài số 1 nếu ai dùng xóa Class đi nếu không xóa là lỗi sử dụng

Cách tạm xử lý là nếu có Class lưu vào đâu đó sau khi ẩn Module xong thì Import lại nó là xong

Khi thống kê xong mọi cái sẽ chỉnh sửa File bài số 1 sau
gửi bạn nhé
Liên kết: https://youtu.be/z_hJjzewcWE
 
Tôi đã nói thử bài số 23 đi lại còn cố thử file bài số 1

Nói mấy lần rồi sao vẫn cứ cố tình như vậy ... bạn hãy thử cái Exe đi xong rồi tính

Tôi úp mẫu Excel lên đây cho ai thích thì thử nhé .... tôi chỉ trả lời khi thấy file thật việc thật còn Video này nọ có lẽ bỏ qua

Sử dụng Exe bài số 23 Test xong có gì báo lại ... còn bài số 1 đang lỗi xem xét tổng hợp viết lại sau

Thấy hơi kỳ lạ một chút tại sao file úp lên đây bị gắn nhãn Virus trong Khi thử virustotal thì sạch

Pass WinRar là : 123
 

File đính kèm

Lần chỉnh sửa cuối:
ai úp Exe hay DLL lên GPE điều bị gắn nhãn có virus và chặn tải hết còn tại sao Tôi chịu ????

kể cả file quét virustotal sạch tinh vẫn bị vậy đó là chưa nói file báo có cả tá virus ... Vì vậy ai úp lên đặt Pass cho nó là hết

khi chạy Exe lần đầu chọn như sau là sử dụng được ... còn trình diệt Virus của Windows xóa đi thì cũng nên cho nó xóa vào sọt rác cho dù app của ai

cũng vậy an toàn là trên hết ...

1756971929721.png
 
kết quả như nhau nếu file không có class module
Liên kết: https://youtu.be/w1f_Iff5BkQ
1/ Tôi không có Office 2010 + máy ảo mà thử kiểu vậy

2/ Tôi thử Office 365_x64 và Office2024_x64 chạy tốt

3/ Úp cái file Excel mẫu của tôi mà bạn ẩn lên đây tôi chạy lại theo mục 2 xem

nếu nó chạy thì loại Excel 2010 vào thùng rác vì cổ rồi nên tôi ko quan tâm nó nữa mà chỉnh sửa
 
1/ Tôi không có Office 2010 + máy ảo mà thử kiểu vậy

2/ Tôi thử Office 365_x64 và Office2024_x64 chạy tốt

3/ Úp cái file Excel mẫu của tôi mà bạn ẩn lên đây tôi chạy lại theo mục 2 xem

nếu nó chạy thì loại Excel 2010 vào thùng rác vì cổ rồi nên tôi ko quan tâm nó nữa mà chỉnh sửa
Bạn có làm như video mình đã làm không ?
 
1/ Tôi không có Office 2010 + máy ảo mà thử kiểu vậy

2/ Tôi thử Office 365_x64 và Office2024_x64 chạy tốt

3/ Úp cái file Excel mẫu của tôi mà bạn ẩn lên đây tôi chạy lại theo mục 2 xem

nếu nó chạy thì loại Excel 2010 vào thùng rác vì cổ rồi nên tôi ko quan tâm nó nữa mà chỉnh sửa
1757033808984.png

Lưu ý khi ẩn Module xong mở file lên Save As từ File .xlsm sang .xlsb thì không phục phồi file .xlsb lại được vì cấu trúc nhị phân thay đổi

Vì vậy ẩn file nào phục hồi lại chính file đó là OK ( Áp dụng cho Tools của Tôi còn của ai đó ít quan tâm )
 

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

Back
Top Bottom