Tự động chạy macro khi mở sheet

Nội dung chính

  • 1 Chạy mã macro khi mở hoặc đóng tệp Excel
  • 2 Chạy mã macro ngay khi file Excel được kích hoạt 
  • 3 Cách chạy mã macro cùng lúc trên nhiều tệp Excel cùng lúc

Chạy mã macro khi mở hoặc đóng tệp Excel

Trong nhiều trường hợp, bạn có thể sử dụng mã VBA để thực hiện các thao tác mà các hàm tích hợp sẵn trong Excel không hỗ trợ. Nhưng bạn đã bao giờ cố gắng chạy macro VBA mỗi khi mở hoặc đóng tệp Excel làm việc chưa? Ở phần này của bài viết, Gitiho sẽ chỉ cho các bạn biết cách chạy mã VBA trong khi mở hoặc đóng tệp Excel mọi lúc.

Bước 1: Mở tệp Excel cần thực hiện nhiệm vụ.

Bước 2: Nhấn tổ hợp phím Alt + F11 hoặc chọn mục Visual Basic trong thẻ Developer để mở cửa sổ Microsoft Visual Basic for Applications.

Bước 2: Kích đúng vào ThisWorkbook trong ngăn Project bên trái. 

Tự động chạy macro khi mở sheet

Bước 3: Trong cửa sổ mã ở bên phải, chọn Workbook từ danh sách thả xuống bên trái. Lưu ý theo mặc định tùy chọn Open sẽ được hiển thị trong danh sách thả xuống bên phải, nếu không hãy chọn lại và thay đổi thành Open.

Tự động chạy macro khi mở sheet

Bước 4: Sau đó, sao chép mã của riêng bạn mà không có dòng đầu tiên và dòng cuối cùng, rồi dán vào giữa hai dòng là Private Sub Workbook_Open() và End Sub như hình ảnh hiển thị dưới đây.

Tự động chạy macro khi mở sheet

Bước 5: Bấm vào nút Save để lưu mã, trong hộp thoại nhắc nhở bật lên, bấm nút No.

Tự động chạy macro khi mở sheet

Bước 6: Sau đó, hộp thoại Save as hiển thị, đặt tên cho tệp Excel, chọn nơi lưu và chọn định dạng lưu tệp tại khung Save as type là Excel Macro-Enabled Workbook rồi bấm nút Save để hoàn tất.

Tự động chạy macro khi mở sheet

Bước 7: Bây giờ mã VBA sẽ chạy trong khi tệp Excel làm việc đang mở hoặc khi đóng lại.

Nếu bạn muốn chạy mã trong khi đóng tệp Excel mỗi lần, hãy chọn Deactiviate từ danh sách thả xuống bên phải trong cửa sổ Code và sao chép mã bạn sẽ chạy và rồi dán vào giữa lệnh Private Sub Workbook_Deactivate() và End Sub.

Xem thêm: Cách tính trung bình các giá trị sau khi tìm kiếm Vlookup trong Excel

Xem thêm: Cách chèn nút tùy chỉnh và các cách vô hiệu hóa menu chuột phải trong Excel

Chạy mã macro ngay khi file Excel được kích hoạt 

Trong trường hợp bạn chỉ làm việc với một mã VBA cho một file Excel cố định. Thì thay vì phải chạy mã thủ công mỗi khi mở tệp Excel lên để làm việc, dưới đây Gitiho sẽ hướng dẫn cách chạy mã macro tự động ngay khi bạn chọn hoặc kích hoạt một sheets cụ thể từ tệp Excel. Cách thực hiện như sau:

Bước 1: Mở tệp Excel cần phải chạy mã macro tự động.

Bước 2: Kích chuột phải vào tên của sheets mà bạn muốn thực thi macro khi kích hoạt nó.

Bước 3: Trong menu hiển thị chọn tùy chọn View Code.

Bước 4: Trong cửa sổ Microsoft Visual Basic for applications đã mở, sao chép và dán mã dưới đây vào modul trống ở bên phải.

Private Sub Worksheet_Activate()
Call MyMacro
End Sub

Tự động chạy macro khi mở sheet

Lưu ý : Trong đoạn mã trên, bạn có thể thay đổi tên Mymacro thành của riêng bạn.

Bước 5: Sau đó, lưu và đóng cửa sổ mã, bây giờ khi bạn chọn hoặc kích hoạt một sheets cụ thể từ tệp Excel thì mã macro này sẽ được kích hoạt ngay lập tức vô cùng tiện lợi.

Cách chạy mã macro cùng lúc trên nhiều tệp Excel cùng lúc

Ở bài viết này, Gitiho sẽ nói về cách chạy macro trên nhiều tệp Excel làm việc cùng một lúc mà không cần mở chúng. Phương pháp sau có thể giúp bạn giải quyết công việc này trong Excel. Để chạy macro trên nhiều tệp Excel đang được mở cùng lúc, bạn có thể sử dụng mã VBA sau:

Bước 1: Mở các tệp Excel cần thực hiện nhiệm vụ.

Bước 2: Nhấn tổ hợp phím Alt + F11 hoặc chọn mục Visual Basic trong thẻ Developer để mở cửa sổ Microsoft Visual Basic for Applications.

Bước 3:  Truy cập vào menu Insert > Module từ danh sách tùy chọn.

Bước 4: Copy và dán macro sau vào cửa sổ module.

Sub LoopThroughFiles()
    Dim xFd As FileDialog
    Dim xFdItem As Variant
    Dim xFileName As String
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    If xFd.Show = -1 Then
        xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
        xFileName = Dir(xFdItem & "*.xls*")
        Do While xFileName <> ""
            With Workbooks.Open(xFdItem & xFileName)
                'your code here
            End With
            xFileName = Dir
        Loop
    End If
End Sub

Lưu ý : Trong đoạn mã trên, bạn có thể sao chép và dán mã của riêng bạn mà không có tiêu đề Sub và kết thúc trang End Sub. Kết thúc giữa các tập lệnh With Workbooks.Open(xFdItem & xFileName) và End With. Chi tiết xem ảnh ngay dưới đây. 

Tự động chạy macro khi mở sheet

Bước 5: Sau đó nhấn phím F5 để thực thi mã này và cửa sổ Browse được hiển thị, bạn hãy chọn một thư mục chứa các tệp Excel làm việc đang mở mà bạn muốn áp dụng macro này, như ảnh hiển thị dưới đây. 

Tự động chạy macro khi mở sheet

Bước 6: Sau cùng bấm nút OK, macro mong muốn sẽ được thực thi cùng một lúc từ tệp Excel đang làm việc này một tệp Excel khác cho đến khi kết thúc. 

Trên đây Gitiho vừa hướng dẫn các bạn cách chạy mã macro khi mở, đóng tệp Excel, khi một sheets trong tệp được chọn, khi bạn kích hoạt một sheets cụ thể trong Excel hoặc có thể cài đặt để chạy mã VBA cho đồng thời nhiều tệp Excel đang mở cùng lúc. Chúc các bạn thành công!

Để biết tất tần tật về Excel, sở hữu ngay seris Excel tuyệt đỉnh:

  1. MOSE - Chinh phục MOS EXCEL 2013 cùng Nimbus

  2. VBAG01 - Tuyệt đỉnh VBA - Viết code trong tầm tay

  3. EXG01 - Tuyệt đỉnh Excel - Trở thành bậc thầy Excel trong 16 giờ

  4. EXG02 - Thủ thuật Excel cập nhật hàng tuần cho dân văn phòng

  5. EXG04 - Kỹ năng báo cáo - Tư duy tổ chức dữ liệu trên Excel

  6. Ebook Tuyệt đỉnh Excel - Khai phá 10 kỹ thuật ứng dụng Excel mà đại học không dạy bạn