Cách sao chép dữ liệu từ file Excel đến file khác bằng VBA

Khi làm việc trên Excel, chúng ta có thể dùng nhiều tệp khác nhau cùng một lúc. Một trong những thao tác thường dùng đó là sao chép dữ liệu file Excel này đến file khác. Trong bài viết này, UniTrain sẽ hướng dẫn bạn cách sao  chép dữ liệu từ file Excel này sang file Excel khác trong VBA.

Tệp nguồn Excel

Giả sử, người dùng có tệp Excel, gồm 3 sheets: April, May và Sheet3 (như hình dưới). Worksheet April có số lượng bán hàng cùng với các ô có công thức (cột D). Hai sheet còn lại có dữ liệu tương tự nhau. Và nhiệm vụ chúng ta bây giờ là sao chép nguồn dữ liệu này vào một file khác.

Cells with formula in Excel

The Macro trong VBA

Viết macro dưới đây trong Workbook_Open() của tệp Excel. Ngoài ra, bạn cũng có thể viết mã trong Module.

Option Explicit

Private Sub Workbook_Open()
    Call copyDataFromAnotherFile
End Sub

Sub copyDataFromAnotherFile()
    On Error GoTo ErrHandler

    Application.ScreenUpdating = False

    Dim src As Workbook
    Set src = Workbooks.Open("D:sample.xlsx", True, True)      ' Open the source file in "read only" mode.
    
    Dim iSheetCount As Integer
    iSheetCount = 1
    
    Dim srcWs As Worksheet
    For Each srcWs In src.Sheets
        ' Get source row and column count.
        Dim iRows, iCols As Integer
        iRows = src.Worksheets(srcWs.Name).UsedRange.Rows.Count
        iCols = src.Worksheets(srcWs.Name).UsedRange.Columns.Count
        
        Worksheets(iSheetCount).Name = srcWs.Name         ' Rename the worksheet.

        Dim iC1, iC2 As Integer       ' just counters.

        ' Start copying data from source to destination.
        For iC1 = 1 To iRows
            For iC2 = 1 To iCols
                ' Check if cell (in source) has formula.
                If src.Worksheets(srcWs.Name).Cells(iC1, iC2).HasFormula() Then
                    Worksheets(srcWs.Name).Cells(iC1, iC2) = src.Worksheets(srcWs.Name).Cells(iC1, iC2).Formula
                Else
                    Worksheets(srcWs.Name).Cells(iC1, iC2) = src.Worksheets(srcWs.Name).Cells(iC1, iC2)
                End If
            Next iC2
        Next iC1
        
        ' Add a new sheet (to this workbook or destination file) if sheet does not exist.
        If (Worksheets.Count < src.Worksheets.Count) Then
            Sheets.Add After:=src.Worksheets(srcWs.Name)
            iSheetCount = iSheetCount + 1
        End If
    Next
    
    ' Done! Now close the source file.
    src.Close False       ' False - Do not save the source file.
    Set src = Nothing

ErrHandler:
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

 

Đầu tiên, chúng ta sẽ mở sổ làm việc nguồn, nằm trong thư mục “D:” bằng cách nhập mã dưới đây:

Dim src As Workbook
Set src = Workbooks.Open("D:sample.xlsx", True, True)

Thao tác này sẽ được lặp lại với từng “worksheet” trong tệp nguồn và tìm kiếm dữ liệu.

Tệp Excel khác có thể có hoặc không có các worksheets (trang tính) có trong tệp nguồn. Người dùng sẽ đặt tên lại cho sheet đó bằng mã dưới đây:

Worksheets(iSheetCount).Name = srcWs.Name

Tiếp theo, macro sao chép dữ liệu từ nguồn đến file Excel khác (bao gồm các công thức có trong file Excel cũ).

Bạn nhập mã dưới đây để kiểm tra xem tệp Excel mới có cùng số trang tính hay không. Nếu không, chúng sẽ tạo (hoặc thêm) một trang tính mới trong tệp Excel mới.

If (Worksheets.Count < src.Worksheets.Count) Then
    Sheets.Add After:=src.Worksheets(srcWs.Name)
    iSheetCount = iSheetCount + 1
End If

Và cuối cùng, đóng file nguồn bằng cách nhập mã:

src.Close False
Set src = Nothing

Cách sao chép dữ liệu từ file Excel đến file khác bằng VBA

Xem thêm

Khóa học Ứng dụng VBA trong Excel

[Tải tài liệu miễn phí] Template Update tỷ giá tự động bằng Power Query, Dashboard và VBA

Tổng hợp các thuật ngữ quan trọng trong VBA

Cách thêm, xóa, chặn nhận xét trong Excel VBA

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

1 + 1 = ? (Nhập Haii để trả lời đúng)

Bài viết liên quan
Phím tắt Excel giúp tiết kiệm 90% thời gian nhập liệu

Trong quá trình xử lý dữ liệu bằng Excel, việc sử dụng các phím tắt không chỉ giúp tối ưu tốc độ làm việc mà còn tăng tính chính xác. Bài

Xem thêm
Ứng dụng hàm TEXTJOIN nâng cao trong Excel

1. Giới thiệu hàm TEXTJOIN và IF  Hàm TEXTJOIN trong Excel giúp nối các giá trị từ một phạm vi hoặc danh sách các ô, sử dụng dấu phân cách tùy

Xem thêm
30 tháng Tư rực rỡ, 01 tháng Năm ưu đãi bất ngờ

Mừng 50 năm thống nhất Đất nước, UniTrain ưu đãi đến 2.500.000 VNĐ trên học phí gốc cho học viên đăng ký các khóa combo. Hình thức online: 🔸Giảm 1.400.000đ trên học

Xem thêm
Nối các mảng dữ liệu trong Python

Trong quá trình xử lý dữ liệu với pandas, việc kết hợp nhiều bảng dữ liệu là thao tác rất phổ biến. Hàm concat() chính là công cụ mạnh mẽ giúp

Xem thêm