Hướng Dẫn Cài Vba Cho Excel 2026: Từ Cơ Bản Đến Nâng Cao

Mục lục bài viết

1. Giới thiệu chung về VBA trong Excel 2026

Visual Basic for Applications (VBA) là một ngôn ngữ lập trình được tích hợp sẵn trong các sản phẩm của Microsoft Office, trong đó Excel là một trong những công cụ mạnh mẽ nhất để tự động hoá công việc, xử lý dữ liệu và tạo ra các giải pháp tùy chỉnh. Đối với người dùng Excel 2026, việc cài đặt và kích hoạt VBA là bước đầu tiên để khai thác tiềm năng này.

Bài viết dưới đây sẽ cung cấp cho bạn một hướng dẫn chi tiết, từng bước một, từ việc chuẩn bị môi trường, cài đặt và kích hoạt VBA, đến việc viết macro đơn giản, quản lý bảo mật và tối ưu hoá hiệu năng. Ngoài ra, chúng tôi cũng sẽ giới thiệu một số mẹo nâng cao giúp bạn trở thành “siêu nhân” VBA trong Excel 2026.

Lưu ý: Nội dung này được viết dành cho người dùng Windows (Windows 7/8/10/11) và phiên bản Excel 2026 thuộc bộ Microsoft Office 2026 (cả 32-bit và 64-bit). Nếu bạn đang dùng Excel 2026 trên Mac, một số bước có thể khác nhau và sẽ được đề cập riêng trong phần phụ lục.

2. Kiểm tra phiên bản Excel 2026 và môi trường hệ thống

2.1 Xác định phiên bản 32-bit hay 64-bit

  1. Mở Excel 2026.
  2. Vào File → Account → About Excel.
  3. Cửa sổ hiện ra sẽ hiển thị thông tin như “Microsoft Excel 2026 MSO (16.0.XXXXX) 32-bit” hoặc “64-bit”.

Việc biết rõ kiến trúc là quan trọng vì một số thư viện và add‑in có thể chỉ hỗ trợ một trong hai kiến trúc.

2.2 Kiểm tra cài đặt .NET Framework

Mặc dù VBA không phụ thuộc trực tiếp vào .NET, nhưng nhiều add‑in và công cụ hỗ trợ VBA lại dựa vào .NET. Đảm bảo máy tính của bạn có .NET Framework 4.5 trở lên (có sẵn trong Windows 10/11). Để kiểm tra:

  • Mở Control Panel → Programs → Programs and Features → Turn Windows features on or off → Kiểm tra “.NET Framework 4.x Advanced Services”.

Nếu chưa có, bạn có thể tải từ trang Microsoft: https://dotnet.microsoft.com/download/dotnet-framework.

3. Kích hoạt thẻ “Developer” (Nhà phát triển) trong Excel 2026

Thẻ Developer chứa các công cụ cần thiết để viết, chỉnh sửa và quản lý macro VBA. Khi thẻ này chưa xuất hiện trên Ribbon, bạn thực hiện các bước sau:

  1. File → Options → Customize Ribbon.
  2. Ở khung Main Tabs, tích vào Developer.
  3. Nhấn OK.

Bây giờ, trên thanh Ribbon sẽ xuất hiện tab Developer với các nhóm: Code, Add‑ins, Controls, XML.

4. Cài đặt và cấu hình môi trường VBA

4.1 Mở cửa sổ VBA (Visual Basic Editor – VBE)

  • Alt + F11: Mở VBE nhanh chóng.
  • Hoặc Developer → Visual Basic.

4.2 Kiểm tra tham chiếu (References)

Trong VBE, vào Tools → References. Bạn sẽ thấy danh sách các thư viện được tham chiếu. Các mục quan trọng bao gồm:

  • Visual Basic for Applications – luôn được chọn.
  • Microsoft Excel xx.x Object Library – tương ứng với phiên bản Excel.
  • OLE Automation, Microsoft Office xx.x Object Library – hỗ trợ các thao tác Office chung.
  • Microsoft Scripting Runtime – nếu bạn cần làm việc với FileSystemObject.
  • Microsoft ActiveX Data Objects xx.x Library – để kết nối cơ sở dữ liệu.

Bạn có thể tick/untick các thư viện tùy vào nhu cầu. Đối với người mới, chỉ cần giữ các mục mặc định.

4.3 Thiết lập bảo mật macro

Với mục tiêu bảo vệ máy tính khỏi macro độc hại, Excel có nhiều mức độ bảo mật:

  1. File → Options → Trust Center → Trust Center Settings → Macro Settings
  2. Các tùy chọn:
  3. Disable all macros without notification (không khuyến nghị cho người học).
  4. Disable all macros with notification (mặc định, cho phép bật macro khi mở file).
  5. Disable all macros except digitally signed macros (an toàn, chỉ chạy macro có chữ ký).
  6. Enable all macros (không an toàn, chỉ dùng trong môi trường nội bộ).

Khuyến nghị: Chọn “Disable all macros with notification”, sau đó khi mở file có macro, nhấn Enable Content.

4.4 Tạo một macro mẫu để kiểm tra

  1. Developer → Record Macro.
  2. Đặt tên: TestMacro.
  3. Chọn Store macro in: This Workbook.
  4. Thực hiện một hành động đơn giản, ví dụ: chọn ô A1 và nhập “Hello VBA”.
  5. Dừng ghi: Developer → Stop Recording.

Mở VBE (Alt+F11) và vào Modules → Module1. Bạn sẽ thấy mã tự động tạo:

Sub TestMacro() Range("A1").Select ActiveCell.FormulaR1C1 = "Hello VBA"
End Sub

Nếu macro chạy thành công, nghĩa là VBA đã được cài đặt và hoạt động bình thường.

5. Viết macro VBA cơ bản

5.1 Cấu trúc một macro

Sub TênMacro() ' Khai báo biến (nếu cần) Dim i As Long ' Thực hiện hành động For i = 1 To 10 Cells(i, 1).Value = "Dòng " & i Next i
End Sub
  • Sub: khai báo một thủ tục (procedure) không trả về giá trị.
  • Function: khai báo một hàm trả về giá trị (được dùng trong công thức Excel).

5.2 Khai báo biến và kiểu dữ liệu

Kiểu dữ liệuMô tảVí dụ
IntegerSố nguyên (‑32,768 đến 32,767)Dim n As Integer
LongSố nguyên lớn hơn IntegerDim total As Long
DoubleSố thực (có dấu chấm thập phân)Dim price As Double
StringChuỗi ký tựDim name As String
BooleanTrue/FalseDim flag As Boolean
VariantKiểu dữ liệu mặc định, có thể chứa bất kỳ giá trị nàoDim anyValue
ObjectĐối tượng COM (Workbook, Worksheet, Range…)Dim ws As Worksheet

Khuyến nghị: Luôn khai báo kiểu dữ liệu để cải thiện hiệu năng và tránh lỗi.

5.3 Thao tác với các đối tượng Excel

Sub TaoBangTongHop() Dim wsSrc As Worksheet, wsDst As Worksheet Set wsSrc = ThisWorkbook.Worksheets("Dữ liệu") Set wsDst = ThisWorkbook.Worksheets.Add(After:=wsSrc) wsDst.Name = "Bảng Tổng Hợp" ' Sao chép tiêu đề wsSrc.Range("A1:D1").Copy Destination:=wsDst.Range("A1") ' Tính tổng cột B wsDst.Range("E2").Formula = "=SUM(" & wsSrc.Name & "!B2:B100)"
End Sub

Trong ví dụ trên, chúng ta tạo một sheet mới, sao chép tiêu đề và chèn công thức tổng.

6. Quản lý bảo mật và chữ ký số cho macro VBA

6.1 Tạo Self‑Signed Certificate (Chứng chỉ tự ký)

  1. Mở Microsoft Office Tools → Digital Certificate for VBA Projects (có sẵn trong bộ Office).
  2. Nhập tên chứng chỉ (ví dụ: MyExcelMacroCert).
  3. Nhấn OK.

6.2 Ký macro

  1. Trong VBE, vào Tools → Digital Signature.
  2. Chọn chứng chỉ vừa tạo và OK.
  3. Lưu file dưới dạng Excel Macro‑Enabled Workbook (.xlsm).

Sau khi ký, khi người dùng mở file, Excel sẽ nhận diện macro là “được tin cậy” nếu Trust Center cho phép chạy macro có chữ ký.

6.3 Thêm thư mục tin cậy (Trusted Locations)

Nếu bạn thường làm việc trong một thư mục chung, có thể thêm vào Trusted Locations để không phải bật macro mỗi lần:

  • File → Options → Trust Center → Trust Center Settings → Trusted Locations → Add new location.
  • Chọn thư mục và tick Subfolders of this location are also trusted.

7. Xử lý lỗi (Error Handling) trong VBA

Cài Vba Cho Excel 2026
Cài Vba Cho Excel 2026

Khi viết macro phức tạp, lỗi không thể tránh khỏi. Việc sử dụng cấu trúc On Error giúp chương trình không dừng đột ngột.

Sub DocDuLieu() On Error GoTo ErrHandler Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Dữ liệu") Dim rng As Range Set rng = ws.Range("A1:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row) ' Thực hiện một số thao tác... Exit Sub ErrHandler: MsgBox "Lỗi: " & Err.Number & " - " & Err.Description, vbCritical, "Lỗi VBA" ' Ghi log lỗi vào sheet Log (nếu có) Resume Next
End Sub
  • On Error GoTo ErrHandler: chuyển tới nhãn ErrHandler khi có lỗi.
  • Resume Next: tiếp tục thực thi từ dòng sau lỗi (cẩn thận, có thể gây dữ liệu sai).
  • Err.Clear: xóa thông tin lỗi sau khi xử lý.

8. Tối ưu hoá hiệu năng macro

  1. Tắt ScreenUpdating
    vba Application.ScreenUpdating = False '...code... Application.ScreenUpdating = True

  2. Tắt Calculation (đối với workbook lớn)
    vba Application.Calculation = xlCalculationManual '...code... Application.Calculate Application.Calculation = xlCalculationAutomatic

  3. Sử dụng biến mảng (Array) thay vì thao tác ô từng ô

vba Dim arr As Variant arr = ws.Range("A1:D1000").Value ' Đọc vào mảng ' Xử lý mảng trong VBA ws.Range("E1:H1000").Value = arr ' Ghi lại

  1. Tránh sử dụng .Select và .Activate – truy cập trực tiếp đối tượng.

vba ' Thay vì: Sheets("Sheet1").Select Range("A1").Select Selection.Value = 10 ' Nên: Sheets("Sheet1").Range("A1").Value = 10

  1. Sử dụng With…End With để giảm lặp lại đối tượng.

vba With Worksheets("Báo cáo") .Range("A1").Value = "Tiêu đề" .Range("A2").Formula = "=SUM(B:B)" .Columns("C:C").NumberFormat = "#,##0" End With

9. Tích hợp VBA với các nguồn dữ liệu khác

9.1 Kết nối tới SQL Server bằng ADO

Sub ConnectSQL() Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim sConnString As String sConnString = "Provider=SQLOLEDB;Data Source=SERVERNAME;" & _ "Initial Catalog=DatabaseName;Integrated Security=SSPI;" Set conn = New ADODB.Connection conn.Open sConnString Set rs = New ADODB.Recordset rs.Open "SELECT FROM dbo.KhachHang", conn, adOpenStatic, adLockReadOnly ' Đổ dữ liệu vào sheet Sheet1.Range("A2").CopyFromRecordset rs rs.Close conn.Close
End Sub

Lưu ý: Trước khi chạy, bạn phải đánh dấu Microsoft ActiveX Data Objects xx.x Library trong Tools → References.

9.2 Đọc/ghi file CSV, TXT

Sub ImportCSV() Dim filePath As String filePath = "C:\Data\sales.csv" With Sheet1.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=Sheet1.Range("A1")) .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True .Refresh BackgroundQuery:=False End With
End Sub

9.3 Gửi email Outlook từ VBA

Sub SendMail() Dim olApp As Object, olMail As Object Set olApp = CreateObject("Outlook.Application") Set olMail = olApp.CreateItem(0) ' 0 = olMailItem With olMail .To = "example@domain.com" .Subject = "Báo cáo ngày " & Format(Date, "dd/mm/yyyy") .Body = "Kính gửi, " & vbCrLf & "Đính kèm là báo cáo." .Attachments.Add "C:\Reports\Report.xlsx" .Send End With Set olMail = Nothing Set olApp = Nothing
End Sub

10. Tạo UserForm (Giao diện người dùng) trong VBA

10.1 Thêm UserForm

  1. Trong VBE, Insert → UserForm.
  2. Sử dụng Toolbox để kéo các điều khiển: Label, TextBox, CommandButton, ComboBox, ListBox.

10.2 Mã ví dụ: Form nhập dữ liệu khách hàng

'--- Code trong UserForm1 ---
Private Sub btnOK_Click() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("KháchHàng") Dim lastRow As Long lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1 ws.Cells(lastRow, 1).Value = Me.txtMaKH.Text ws.Cells(lastRow, 2).Value = Me.txtTenKH.Text ws.Cells(lastRow, 3).Value = Me.txtDienThoai.Text ws.Cells(lastRow, 4).Value = Me.txtDiaChi.Text MsgBox "Đã lưu thông tin khách hàng.", vbInformation Me.Hide
End Sub Private Sub btnCancel_Click() Me.Hide
End Sub

10.3 Gọi UserForm từ macro

Sub ShowCustomerForm() UserForm1.Show
End Sub

Bạn có thể gắn macro ShowCustomerForm vào một nút trên sheet (Insert → Shapes → Assign Macro) để người dùng mở form dễ dàng.

11. Phân phối macro VBA tới người dùng khác

11.1 Lưu dưới dạng .xlsm hoặc .xlam

  • .xlsm: Workbook có macro, thích hợp nếu macro gắn liền với dữ liệu.
  • .xlam: Add‑in, cho phép cài đặt một lần và sử dụng trên bất kỳ workbook nào.

11.2 Tạo Add‑in

  1. Mở workbook chứa macro.
  2. File → Save As → Excel Add‑in (.xlam).
  3. Đặt tên, lưu.
  4. Để người dùng cài: File → Options → Add‑Ins → Excel Add‑ins → Go → Browse và chọn file .xlam.

Sau khi cài, các hàm công khai (Public Function) sẽ xuất hiện trong danh sách hàm Excel và có thể dùng trong công thức.

11.3 Sử dụng VBA Project Protection

Nếu muốn bảo vệ mã nguồn:

  1. Trong VBE, Tools → VBAProject Properties → Protection.
  2. Tick Lock project for viewing và đặt mật khẩu.
  3. Lưu lại workbook.

Cảnh báo: Mật khẩu có thể bị giải mã bằng công cụ bên thứ ba. Do đó, không nên dùng để bảo vệ tài sản quan trọng.

12. Các ví dụ thực tiễn thường gặp trong công việc

12.1 Tự động tạo báo cáo tuần

Sub BaoCaoTuan() Dim wsSrc As Worksheet, wsRpt As Worksheet Set wsSrc = ThisWorkbook.Worksheets("Dữ liệu") Set wsRpt = ThisWorkbook.Worksheets.Add(After:=Sheets(Sheets.Count)) wsRpt.Name = "Báo cáo " & Format(Date, "ww-yyyy") ' Sao chép tiêu đề wsSrc.Rows(1).Copy Destination:=wsRpt.Rows(1) ' Lọc dữ liệu trong tuần hiện tại Dim rng As Range, crit As String crit = ">" & Date - Weekday(Date, vbMonday) + 1 & " AND <=" & Date - Weekday(Date, vbMonday) + 7 wsSrc.Range("A1").AutoFilter Field:=1, Criteria1:=crit wsSrc.UsedRange.SpecialCells(xlCellTypeVisible).Copy _ Destination:=wsRpt.Range("A2") wsSrc.AutoFilterMode = False MsgBox "Báo cáo tuần đã được tạo tại sheet '" & wsRpt.Name & "'.", vbInformation
End Sub

12.2 Gộp nhiều file CSV vào một workbook

Sub GopCSV() Dim folderPath As String, fileName As String Dim wsDest As Worksheet, nextRow As Long folderPath = "C:\Data\CSV\" Set wsDest = ThisWorkbook.Worksheets("Dữ liệu") nextRow = wsDest.Cells(wsDest.Rows.Count, 1).End(xlUp).Row + 1 fileName = Dir(folderPath & ".csv") Do While fileName <> "" With wsDest.QueryTables.Add(Connection:="TEXT;" & folderPath & fileName, _ Destination:=wsDest.Cells(nextRow, 1)) .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True .Refresh BackgroundQuery:=False End With nextRow = wsDest.Cells(wsDest.Rows.Count, 1).End(xlUp).Row + 1 fileName = Dir Loop MsgBox "Đã gộp tất cả file CSV.", vbInformation
End Sub

12.3 Kiểm tra dữ liệu trùng lặp và đánh dấu màu

Sub HighlightDuplicates() Dim rng As Range, cell As Range Set rng = Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row) Application.ScreenUpdating = False For Each cell In rng If WorksheetFunction.CountIf(rng, cell.Value) > 1 Then cell.Interior.Color = RGB(255, 200, 200) ' màu hồng nhẹ Else cell.Interior.ColorIndex = xlNone End If Next cell Application.ScreenUpdating = True MsgBox "Hoàn thành đánh dấu trùng lặp.", vbInformation
End Sub

13. Khắc phục các vấn đề thường gặp khi cài VBA

Vấn đềNguyên nhânGiải pháp
Macro không chạy, thông báo “Macros have been disabled”Cài đặt bảo mật quá caoVào Trust Center → Macro Settings, chọn “Disable all macros with notification” và bật macro khi mở file.
Lỗi “Compile error: User-defined type not defined”Thư viện tham chiếu chưa được bậtVào VBE → Tools → References → Tick thư viện cần thiết (ví dụ: “Microsoft Scripting Runtime”).
Không thể lưu file .xlsm, xuất hiện lỗi “The file cannot be saved because it is read‑only”File đang mở ở chế độ chỉ đọc hoặc nằm trong thư mục không tin cậyĐảm bảo file không được mở ở chế độ read‑only, hoặc thêm thư mục vào Trusted Locations.
Error 1004 – Application-defined or object-defined errorTham chiếu tới đối tượng không tồn tại (ví dụ: tên sheet sai)Kiểm tra chính tả tên sheet, dùng If WorksheetExists("TênSheet") Then ….
VBA không hiển thị tab DeveloperRibbon đã được tùy chỉnhVào File → Options → Customize Ribbon, chắc chắn tick Developer.

14. Những tài nguyên học VBA hữu ích

  1. Microsoft Docs – VBA Language Reference
    https://learn.microsoft.com/en-us/office/vba/api/overview/excel
  2. Excel Macro Mastery (Bill Jelen) – Blog và video hướng dẫn chi tiết.
  3. Chương trình “Excel VBA for Beginners” trên Udemy – Khóa học video có bài tập thực tế.
  4. Stack Overflow – Cộng đồng lập trình viên, tìm kiếm giải pháp cho các lỗi cụ thể.
  5. VBA Express – Thư viện macro mẫu và giải thích từng hàm.

15. Kết luận

Việc cài VBA cho Excel 2026 không chỉ là một bước kỹ thuật đơn giản mà còn mở ra một thế giới tự động hoá, giảm thiểu lỗi và tăng năng suất làm việc đáng kể. Từ việc kích hoạt thẻ Developer, cấu hình bảo mật, viết macro cơ bản, đến việc tích hợp dữ liệu từ SQL, gửi email Outlook, hay tạo giao diện người dùng bằng UserForm – tất cả đều có thể thực hiện trong môi trường Excel 2026.

Những nguyên tắc tối ưu hoá (tắt ScreenUpdating, sử dụng mảng, tránh .Select) và quản lý lỗi sẽ giúp macro của bạn chạy mượt mà, ổn định. Khi đã nắm vững các kiến thức cơ bản, bạn có thể mở rộng sang việc xây dựng Add‑in (.xlam), ký số macro để phân phối an toàn, và thậm chí tích hợp với các công nghệ khác như Power Query, Power Pivot.

Hy vọng bài viết này đã cung cấp cho bạn một lộ trình chi tiết, từ “cài VBA” cho tới “làm chủ VBA” trong Excel 2026. Hãy bắt tay vào thực hành, tạo ra những giải pháp tự động hoá phù hợp với công việc và doanh nghiệp của bạn. Thành công sẽ đến với những ai không ngừng học hỏi và áp dụng!

⚠️
LƯU Ý QUAN TRỌNG: Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.

Viết một bình luận