Có thể bạn quan tâm: Bật Gợi Ý Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
1. Giới thiệu chung về VBA và mật khẩu bảo vệ
Microsoft Excel là một trong những công cụ bảng tính phổ biến nhất hiện nay, không chỉ vì khả năng tính toán mạnh mẽ mà còn vì tính năng lập trình nhúng – Visual Basic for Applications (VBA). VBA cho phép người dùng tạo ra các macro, tự động hoá quy trình làm việc, xây dựng các hàm tùy chỉnh và thậm chí thiết kế giao diện người dùng phức tạp.
Để bảo vệ mã nguồn VBA khỏi việc bị sao chép, sửa đổi hoặc xem xét bởi người không có quyền, Excel cung cấp tính năng bảo vệ dự án VBA bằng mật khẩu. Khi một dự án VBA được bảo vệ, người dùng không thể mở cửa sổ VBA Editor (Alt + F11) để xem hoặc chỉnh sửa mã nguồn nếu không nhập đúng mật khẩu.
Tuy nhiên, trong thực tế, có nhiều trường hợp người dùng quên mật khẩu, nhận được file từ người khác mà không biết mật khẩu, hoặc cần truy cập vào mã nguồn để bảo trì, sửa lỗi. Đó là lý do tại sao “bẻ khóa VBA trong Excel” trở thành một nhu cầu phổ biến. Bài viết này sẽ cung cấp cho bạn:
- Kiến thức cơ bản về cách Excel lưu trữ mật khẩu VBA.
- Các phương pháp bẻ khóa VBA (công cụ, script, thủ thuật thủ công) và hướng dẫn chi tiết từng bước.
- Những lưu ý pháp lý và đạo đức khi thực hiện việc bẻ khóa.
- Các biện pháp phòng ngừa để bảo vệ dự án VBA của bạn tránh bị bẻ khóa.
Có thể bạn quan tâm: Bảo Vệ Cột Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
2. Cơ chế lưu trữ mật khẩu VBA trong file Excel
2.1. Định dạng file và phần bảo vệ
Kể từ Excel 2007, định dạng file mặc định là .xlsx (đối với workbook không có macro) và .xlsm (đối với workbook có macro). Khi bạn bật macro, file sẽ được lưu dưới dạng ZIP chứa các thành phần XML và các tệp nhị phân. Phần bảo vệ VBA được lưu trong một stream đặc biệt trong file .xlsm (hoặc .xlsb).
Mật khẩu không được lưu dưới dạng plain text mà được hash và encrypt bằng thuật toán RC4 (cũng được gọi là XOR-based). Điều này làm cho việc giải mã trực tiếp bằng mắt người khó khăn, nhưng vẫn có thể khai thác bằng các công cụ hoặc script.
2.2. Các loại bảo vệ trong Excel
- Password to open: Mật khẩu để mở file Excel. Khi nhập sai, người dùng không thể mở file.
- Password to modify: Mật khẩu để cho phép chỉnh sửa file. Người dùng có thể mở ở chế độ đọc‑only nếu không có mật khẩu.
- VBA project password: Mật khẩu bảo vệ dự án VBA, ngăn việc xem hoặc chỉnh sửa mã nguồn.
Bài viết này tập trung vào VBA project password – loại mật khẩu thường gây khó khăn nhất vì nó không ảnh hưởng tới việc mở file, chỉ ngăn truy cập mã nguồn.
Có thể bạn quan tâm: Phần Mềm Tính Tiền Bằng Excel: Giải Pháp Đơn Giản, Tiết Kiệm Và Linh Hoạt Cho Doanh Nghiệp Nhỏ
3. Các phương pháp bẻ khóa VBA: Tổng quan
3.1. Phương pháp thủ công (đổi hex, sửa file)
- Sửa đổi trực tiếp trong file .xlsm: Mở file bằng Notepad++ hoặc một trình soạn thảo hex, tìm và xóa một đoạn mã đặc trưng “DPB” (đánh dấu bảo vệ). Phương pháp này đã lỗi thời với các phiên bản Excel mới, nhưng vẫn có thể áp dụng cho file .xls (Excel 97‑2003).
3.2. Sử dụng công cụ chuyên dụng
- Free VBA Password Remover: Công cụ miễn phí, giao diện đơn giản, hỗ trợ các phiên bản Excel từ 2000 tới 2026.
- VBA Password Bypass (VBAPass): Phiên bản trả phí, cung cấp tốc độ giải mã nhanh hơn và hỗ trợ batch processing.
- Office Password Recovery Toolbox: Công cụ đa năng, không chỉ bẻ khóa VBA mà còn các loại mật khẩu khác.
3.3. Scripting bằng PowerShell, Python hoặc VBA
- PowerShell script: Sử dụng .NET API để mở file, sửa thuộc tính bảo vệ.
- Python script (pyxlsb, openpyxl): Đọc và ghi lại stream “vbaProject.bin” sau khi xóa phần bảo vệ.
- Macro VBA tự động: Tạo một macro trong một workbook sạch, dùng
Application.VBE.ActiveVBProject.Protection = 0sau khi tải file.
3.4. Phương pháp dựa trên “Office XML” (đối với .xlsm)
- Giải nén file .xlsm (đó là một file ZIP), tìm thư mục
xl/vbaProject.bin, sửa đổi nội dung bằng cách xóa segment “DPB” (đánh dấu bảo vệ), sau đó nén lại và đổi đuôi về .xlsm.
4. Hướng dẫn chi tiết: Bẻ khóa VBA bằng công cụ miễn phí
4.1. Chuẩn bị môi trường
- Tải công cụ “Free VBA Password Remover” từ trang web uy tín (ví dụ: https://www.vbaremover.com). Đảm bảo tải phiên bản mới nhất, tương thích với hệ điều hành Windows 10/11.
- Cài đặt (nếu có) hoặc giải nén công cụ vào một thư mục riêng.
- Sao lưu file Excel: Trước khi thực hiện bất kỳ thao tác nào, sao chép file .xlsm hoặc .xlsb sang một vị trí an toàn. Điều này giúp bạn khôi phục lại file nếu quá trình bẻ khóa gặp lỗi.
4.2. Thực hiện bẻ khóa
| Bước | Mô tả |
|---|---|
| Bước 1 | Mở công cụ “Free VBA Password Remover”. Giao diện thường có 2 phần: “Select File” và “Start”. |
| Bước 2 | Nhấn nút Select File, duyệt tới file .xlsm muốn bẻ khóa và chọn. |
| Bước 3 | Kiểm tra mục “File Type” (Excel Macro-Enabled Workbook). Đảm bảo công cụ nhận dạng đúng định dạng. |
| Bước 4 | Nhấn Start. Công cụ sẽ giải mã mật khẩu bằng thuật toán brute‑force/ dictionary tùy phiên bản. Thời gian phụ thuộc vào độ mạnh của mật khẩu (độ dài, ký tự đặc biệt). |
| Bước 5 | Khi quá trình hoàn tất, một thông báo sẽ hiện “Password removed successfully”. Công cụ sẽ tạo một bản sao file mới (thường có hậu tố “_unlocked”). |
| Bước 6 | Mở file mới trong Excel, nhấn Alt + F11 để vào VBA Editor. Bạn sẽ thấy dự án không còn được bảo vệ và có thể xem, chỉnh sửa mã nguồn. |
4.3. Lưu ý khi sử dụng công cụ
- Quyền admin: Một số công cụ yêu cầu chạy với quyền Administrator để truy cập file hệ thống.
- Phòng chống virus: Một số phần mềm diệt virus có thể đánh dấu công cụ là “potentially unwanted”. Hãy tạm thời vô hiệu hoá hoặc whitelist công cụ nếu tin cậy nguồn tải.
- Giới hạn: Đối với mật khẩu dài hơn 12 ký tự và bao gồm ký tự Unicode, thời gian giải mã có thể lên tới vài giờ hoặc thậm chí không thể giải quyết.
5. Bẻ khóa VBA bằng PowerShell: Tự động hoá quy trình
5.1. Môi trường yêu cầu
- Windows 10/11 (PowerShell 5.1 trở lên) hoặc PowerShell Core trên macOS/Linux.
- .NET Framework 4.5 trở lên (đã được cài sẵn trên Windows).
- File .xlsm hoặc .xlsb cần bẻ khóa.
5.2. Script mẫu

Có thể bạn quan tâm: Bẻ Khóa Mật Khẩu Excel: Hướng Dẫn Chi Tiết, Pháp Lý Và Các Công Cụ Hiệu Quả
# Remove-VBAPassword.ps1
param( Parameter(Mandatory=$true) string$ExcelFilePath
) function Unlock-VBAPassword { param($Path) # Kiểm tra tồn tại file if (-not (Test-Path $Path)) { Write-Error "File not found: $Path" return } # Tạo đối tượng Excel COM $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false try { # Mở workbook ở chế độ read‑only để tránh ghi đè $wb = $excel.Workbooks.Open($Path, $ReadOnly = $true) # Duyệt từng dự án VBA foreach ($vbproj in $wb.VBProject.VBComponents) { # Thử bỏ bảo vệ if ($wb.VBProject.Protection = 1) { $wb.VBProject.Protection = 0 Write-Host "Protection removed from project: $($wb.VBProject.Name)" break } } # Lưu file mới $newPath = System.IO.Path::Combine( System.IO.Path::GetDirectoryName($Path), System.IO.Path::GetFileNameWithoutExtension($Path) + "_unlocked.xlsm" ) $wb.SaveAs($newPath, 52) # 52 = xlOpenXMLWorkbookMacroEnabled Write-Host "Unlocked file saved to: $newPath" } catch { Write-Error $_.Exception.Message } finally { $excel.Quit() System.Runtime.Interopservices.Marshal::ReleaseComObject($excel) | Out-Null }
} Unlock-VBAPassword -Path $ExcelFilePath
5.3. Cách chạy script
- Mở PowerShell với quyền Administrator.
- Điều hướng tới thư mục chứa script:
cd C:\Scripts. - Thực thi:
.\Remove-VBAPassword.ps1 -ExcelFilePath "C:\Users\Me\Documents\MyFile.xlsm".
5.4. Giải thích chi tiết
- COM Object: Sử dụng
Excel.Applicationđể tạo một phiên làm việc Excel ẩn. Khi mở workbook, thuộc tínhVBProject.Protectioncó thể được thay đổi nếu không có mật khẩu (một số phiên bản Excel cho phép bỏ bảo vệ khi workbook được mở ở chế độ read‑only). - Lưu ý: Đối với các file được bảo vệ mạnh, phương pháp này có thể không thành công vì Excel sẽ ném lỗi “Project is locked”. Khi đó, cần chuyển sang phương pháp dựa trên file binary (phần tiếp theo).
6. Bẻ khóa VBA bằng cách chỉnh sửa file binary (phương pháp “DPB”)
6.1. Nguyên tắc hoạt động
Trong file vbaProject.bin (được lưu trong thư mục xl/ của file .xlsm), có một segment có tiêu đề DPB (đánh dấu “Project is protected”). Nếu xóa hoặc thay đổi giá trị này, Excel sẽ không nhận ra rằng dự án đang được bảo vệ và sẽ mở dự án mà không yêu cầu mật khẩu.
6.2. Các bước thực hiện
Đổi đuôi file .xlsm thành .zip
bash ren MyFile.xlsm MyFile.zipGiải nén file .zip (bạn có thể dùng WinRAR, 7‑Zip hoặc lệnh
unzip).bash unzip MyFile.zip -d MyFile_unzippedXác định vị trí file vbaProject.bin
Đường dẫn thường là:MyFile_unzipped/xl/vbaProject.bin.Mở vbaProject.bin bằng một trình soạn thảo hex (ví dụ: HxD, Bless (Linux), hoặc Notepad++ với plugin Hex‑Editor).
Tìm chuỗi “DPB”:
- Sử dụng tính năng “Find” và nhập “44 50 42” (hex cho “DPB”).
Khi tìm thấy, bạn sẽ thấy một đoạn dữ liệu như:
00 01 00 00 00 00 00 00 44 50 42 00 ….Thay đổi giá trị DPB:
- Đổi ba byte “44 50 42” thành “00 00 00” hoặc “FF FF FF”.
Đảm bảo không làm thay đổi độ dài file.
Lưu lại vbaProject.bin.
Nén lại thư mục:
bash cd MyFile_unzipped zip -r ../MyFile_unlocked.xlsmMở file mới trong Excel, nhấn Alt + F11 – dự án đã không còn bị khóa.
6.3. Lưu ý quan trọng
- Backup: Luôn sao lưu
vbaProject.bintrước khi chỉnh sửa. - Phiên bản Excel: Phương pháp này hoạt động tốt với Excel 2007‑2026. Đối với Excel 365 (phiên bản 2026 trở lên), Microsoft đã tăng cường mã hoá, có thể cần xóa thêm một số segment “DPB” và “DPB2”.
- Mã hoá mạnh: Nếu file được bảo vệ bằng “Password to open” kèm “VBA password”, việc chỉ sửa DPB không đủ, bạn cần bẻ khóa “Password to open” trước.
7. Pháp lý và đạo đức khi bẻ khóa VBA
7.1. Quy định pháp luật tại Việt Nam
- Luật Sở hữu trí tuệ 2005 (sửa đổi 2009) quy định việc sao chép, khai thác trái phép phần mềm là hành vi vi phạm bản quyền.
- Điều 184 của Bộ luật Dân sự 2026: “Mọi người có quyền được bảo vệ danh dự, uy tín và quyền sở hữu trí tuệ”.
- Do vậy, việc bẻ khóa VBA mà không có sự cho phép của chủ sở hữu có thể bị xem là hành vi vi phạm bản quyền và có thể bị xử lý hành chính hoặc hình sự (tùy mức độ vi phạm).
7.2. Khi nào việc bẻ khóa là hợp pháp?
- Bạn là tác giả: Nếu bạn là người viết macro và quên mật khẩu, việc bẻ khóa để khôi phục mã nguồn là hoàn toàn hợp pháp.
- Bạn có giấy phép: Nếu công ty hoặc khách hàng cung cấp file và cho phép bạn truy cập mã nguồn, bạn có thể bẻ khóa.
- File công cộng: Một số file mẫu được chia sẻ trên internet mà tác giả cho phép sửa đổi, thì việc bẻ khóa cũng không vi phạm.
7.3. Đạo đức trong công việc
- Tôn trọng quyền sở hữu: Trước khi bẻ khóa, luôn hỏi rõ quyền sở hữu và nhận được sự đồng ý bằng văn bản (email, hợp đồng).
- Không khai thác lợi nhuận: Sử dụng mã nguồn đã bẻ khóa để bán lại, tạo sản phẩm thương mại mà không có giấy phép là không đạo đức.
- Ghi nhận nguồn: Khi bạn sử dụng lại đoạn mã, hãy đưa vào phần comment ghi rõ nguồn gốc, nếu có.
8. Cách bảo vệ dự án VBA của bạn tránh bị bẻ khóa
8.1. Sử dụng mật khẩu mạnh
- Độ dài tối thiểu 12 ký tự.
- Kết hợp: chữ hoa, chữ thường, số và ký tự đặc biệt.
- Không dùng từ điển: Tránh các từ thông dụng, ngày sinh, tên công ty.
8.2. Mã hoá VBA bằng công cụ bên thứ ba
- Obfuscator: Công cụ như VBAShield hoặc CodeProtect sẽ biến đổi mã nguồn thành dạng khó đọc, đồng thời tăng độ khó cho việc bẻ khóa.
- Compiling to DLL: Đưa logic quan trọng vào một DLL viết bằng VB.NET hoặc C#, sau đó gọi từ VBA. Khi DLL được bảo vệ, việc bẻ khóa VBA không còn mang lại lợi ích lớn.
8.3. Giới hạn quyền truy cập file
- Sử dụng quyền NTFS để chỉ cho phép người dùng cụ thể đọc/ghi file.
- Lưu trữ trên SharePoint/OneDrive với quyền chia sẻ hạn chế.
8.4. Kiểm tra định kỳ
- Audit: Thực hiện kiểm tra định kỳ các file macro trong công ty để phát hiện file không có bảo mật.
- Log: Bật tính năng logging trong Excel (Microsoft Office 365) để ghi lại ai đã mở file và thực hiện thay đổi.
9. Kết luận
Bẻ khóa VBA trong Excel không phải là một nhiệm vụ vô cùng khó khăn nếu bạn nắm rõ cơ chế lưu trữ mật khẩu và có công cụ phù hợp. Từ các phương pháp thủ công (sửa DPB), công cụ miễn phí, đến việc viết script tự động bằng PowerShell hoặc Python, mỗi cách đều có ưu, nhược điểm và mức độ phức tạp khác nhau.
Tuy nhiên, điều quan trọng nhất là luôn cân nhắc khía cạnh pháp lý và đạo đức. Việc bẻ khóa mà không có sự cho phép rõ ràng có thể dẫn đến hậu quả pháp lý nghiêm trọng và mất uy tín cá nhân hoặc doanh nghiệp. Ngược lại, nếu bạn là người sở hữu hoặc được ủy quyền, việc nắm vững các kỹ thuật này sẽ giúp bạn nhanh chóng khôi phục mã nguồn, sửa lỗi và duy trì hoạt động kinh doanh.
Cuối cùng, để tránh rơi vào tình huống “quên mật khẩu” hay “bị người khác bẻ khóa”, hãy:
- Lưu trữ mật khẩu trong một kho mật khẩu an toàn (Password Manager).
- Sử dụng mật khẩu mạnh và thay đổi định kỳ.
- Áp dụng các biện pháp bảo mật bổ sung như obfuscation, chuyển logic sang DLL, và kiểm soát quyền truy cập file.
Hy vọng bài viết đã cung cấp cho bạn một cái nhìn toàn diện, từ lý thuyết đến thực hành, về cách bẻ khóa VBA trong Excel, đồng thời nhấn mạnh trách nhiệm pháp lý và cách bảo vệ dự án của mình. Chúc bạn thành công trong việc quản lý và bảo vệ các macro Excel của mình!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
