Macro nhập dữ liệu từ một tệp Excel khác

Đầu tiên chúng ta sẽ tạo một đối tượng Workbook để tham chiếu tệp Excel bên ngoài. Và sử dụng đối tượng đó để nhập dữ liệu vào Active workbook hoặc Source Workbook của chúng ta

Hãy xem mã VBA thực tế cho mục đích này. Sao chép dán mã dưới đây vào VB Editor và thực thi mã bằng cách nhấn F5. Đảm bảo rằng tệp Mục tiêu tồn tại trong đường dẫn chính xác như được đề cập trong Target_Path trong mã, trước khi thực thi mã

Sub VBA_Read_Data_Another_External_Workbook()

    '''''Define Object for Target Workbook
    Dim Target_Workbook As Workbook
    Dim Source_Workbook As Workbook
    Dim Target_Path As String
    
    '''''Assign the Workbook File Name along with its Path
    '''''Change path of the Target File name
    Target_Path = "D:\Sample.xlsx"
    Set Target_Workbook = Workbooks.Open(Target_Path)
    Set Source_Workbook = ThisWorkbook
    
    '''''With Target_Workbook object now, it is possible to pull any data from it
    '''''Read Data from Target File
    Target_Data = Target_Workbook.Sheets(1).Cells(1, 1)
    Source_Workbook.Sheets(1).Cells(1, 1) = Target_Data
    
    '''''Update Target File
    Source_data = Source_Workbook.Sheets(1).Cells(3, 1)
    Target_Workbook.Sheets(1).Cells(2, 1) = Source_data
    
    '''''Close Target Workbook
    Source_Workbook.Save
    Target_Workbook.Save
    Target_Workbook.Close False
    
    '''''Process Completed
    MsgBox "Task Completed"
    
End Sub

2. VBA Đọc tệp Excel hoặc Viết để Mở Sổ làm việc?

Nếu một sổ làm việc đã được mở và đang thực thi, thì bạn có thể tham chiếu Excel đó với tên của nó thông qua bộ sưu tập 'Sổ làm việc'. Bạn phải sử dụng chính tên sổ làm việc bên trong mã để đọc hoặc viết nội dung như được đề cập trong mã mẫu này

Sub Write_To_Open_Excel()
    Dim wb As Workbook
    
    'Reference Workbook with its name
    Workbooks("Book2").Worksheets("Sheet2").Activate
    Workbooks("Book3.xls").Worksheets("Sheet2").Activate
    
    'Search for Each Opened Workbook
    For Each wb In Workbooks
        If wb.Name = "Book2" Then
            wb.Sheets(1).Cells(1, 1) = "Writing To Open Excel Worksheet - Testing"
        End If
    Next
End Sub

3. Tham chiếu bên ngoài để nhập dữ liệu từ một sổ làm việc khác

Với kỹ thuật này, trong Excel, chúng tôi lấy dữ liệu từ một ô khác bằng cách sử dụng tham chiếu. Ví dụ: trong Ô A1 nếu chúng ta cần lấy ngày từ Ô B1, chúng ta nhập “=B1” vào ô A1. Đây là một tham chiếu được thực hiện trong phạm vi của sổ làm việc hiện tại

Trong ví dụ của chúng tôi nếu chúng tôi cần tham khảo trang Mục tiêu, hãy sử dụng lệnh như bên dưới

='D. \[vật mẫu. xlsx]Trang tính1′. A2

Thao tác này sẽ tìm nạp dữ liệu từ sổ làm việc bên ngoài

Tham khảo từ Microsoft. Làm cách nào để tạo Tham chiếu bên ngoài và lấy dữ liệu từ excel khác?

4. Tùy chọn nhập dữ liệu hoặc ODBC trong Excel VBA

Điều này tương tự với cơ sở Nhập dữ liệu có sẵn trong Excel. Để làm điều này, sổ làm việc Mục tiêu phải có một số bảng được xác định trong đó

Để nhập dữ liệu từ Mục tiêu, hãy chuyển đến Sổ làm việc nguồn, Dữ liệu->Từ các nguồn khác ->Từ Truy vấn của Microsoft và Cung cấp đường dẫn của Sổ làm việc đích hoặc sử dụng mã bên dưới bằng cách sửa đổi Đường dẫn tệp và Chi tiết tiêu đề cột

Sub Data_Import_Recorded_Macro()

    '''''Change File path and Column Headers to Use this code
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "ODBC;DSN=Excel Files;DBQ=D:\Sample.xlsx;DefaultDir=D:;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandText = Array( _
        "SELECT `Sheet1$`.Column1, `Sheet1$`.Column2, `Sheet1$`.Column3" & Chr(13) & "" & Chr(10) & "FROM `D:\Sample.xlsx`.`Sheet1$` `Sheet1$`" _
        )
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Table_Query_from_Excel_Files"
        .Refresh BackgroundQuery:=False
    End With
    
End Sub

Đây là một số phương pháp có sẵn để nhập từ sổ làm việc bên ngoài vào sổ làm việc đang hoạt động hiện tại. Tuy nhiên, đây không phải là giới hạn

Ghi chú. Để đọc tệp Văn bản thuần túy hoặc tệp nhị phân, hãy sử dụng các lệnh Xử lý tệp VBA như trong liên kết này. Làm cách nào để đọc nội dung từ tệp văn bản bằng VBA?

Có thể có các phương pháp khả thi khác được người khác biết đến. Nếu có, xin vui lòng gửi một tài liệu tham khảo khi bạn tìm thấy

Dưới đây chúng ta sẽ xem xét một chương trình trong Excel VBA nhập các trang tính từ các tệp Excel khác vào một tệp Excel

Tải xuống Quyển 4. xlsx, Book5. xlsx và thêm chúng vào "C. \kiểm tra\"

Tình huống

Macro nhập dữ liệu từ một tệp Excel khác

Thêm các dòng mã sau vào nút lệnh

1. Đầu tiên, chúng ta khai báo hai biến kiểu String, một đối tượng Worksheet và một biến kiểu Integer.

Dim As Chuỗi , Tên tệp As String, sheet As Worksheet, total As Integer

2. Tắt cập nhật màn hình và hiển thị cảnh báo

Ứng dụng. Cập nhật màn hình = Sai
Ứng dụng. DisplayAlerts = Sai

3. Khởi tạo thư mục biến. Chúng tôi sử dụng chức năng Dir để tìm * đầu tiên. xl??

thư mục = "c. \test\"
fileName = Dir(thư mục & "*. xl??")

Ghi chú. Hàm Dir hỗ trợ sử dụng ký tự đại diện nhiều ký tự (*) và một ký tự (?) để tìm kiếm tất cả các loại tệp Excel khác nhau

4. Biến fileName hiện giữ tên của tệp Excel đầu tiên được tìm thấy trong thư mục. thêm một

Do While tên tệp <> ""

Vòng lặp

Thêm các dòng mã sau (tại 5, 6, 7 và 8) vào vòng lặp

5. Không có cách nào đơn giản để sao chép trang tính từ tệp Excel đã đóng. Do đó, chúng tôi mở tệp Excel

sách bài tập. Mở (thư mục và tên tệp)

6. Nhập trang tính từ tệp Excel vào trang nhập khẩu. xlsm

Đối với Từng trang tính Trong Sổ làm việc (tên tệp). Trang tính
    total = Workbooks("import-sheets. xlsm"). bảng tính. đếm
    Sổ làm việc(fileName). Bảng tính (tờ. Tên). Sao chép _
    sau. =Workbooks("nhập-trang tính. xlsm"). Trang tính (tổng cộng)
Trang tính tiếp theo

Giải trình. biến tổng theo dõi tổng số trang tính của trang nhập. xlsm. Chúng ta sử dụng phương thức Copy của đối tượng Worksheet để sao chép từng trang tính và dán nó sau trang tính cuối cùng của trang nhập khẩu. xlsm

7. Đóng tệp Excel

Sổ làm việc(fileName). Gần

8. Chức năng Dir là một chức năng đặc biệt. Để lấy các tệp Excel khác, bạn có thể sử dụng lại hàm Dir mà không cần đối số

tên tệp = Dir()

Ghi chú. Khi không còn tên tệp nào khớp, hàm Dir trả về một chuỗi có độ dài bằng không (""). Kết quả là VBA Excel sẽ rời khỏi vòng lặp Do While

Macro Excel có thể lấy dữ liệu từ sổ làm việc khác không?

Ghi chú. Macro này cho phép bạn lấy dữ liệu từ sổ làm việc khác hoặc đưa dữ liệu vào sổ làm việc đó hoặc làm bất kỳ điều gì với sổ làm việc đó. Mã này là một mẫu cho phép bạn truy cập một tệp Excel khác một cách đơn giản.

Làm cách nào để nhập dữ liệu từ tệp Excel này sang tệp Excel khác bằng VBA?

Viết mã VBA. Trong khung mới mở, chúng tôi sẽ bắt đầu viết mã cần thiết để nhập dữ liệu từ các nguồn bên ngoài. Nhập Sub, viết tắt của chương trình con, nhập ImportData làm tên, kết thúc bằng hai dấu ngoặc đơn và nhấn enter .

Làm cách nào để tự động nhập dữ liệu vào Excel từ một tệp Excel khác?

Trong hộp thoại Lấy dữ liệu ngoài - Bảng tính Excel, trong hộp Tên tệp, chỉ định tên của tệp Excel chứa dữ liệu mà bạn muốn nhập. Nhấp vào Duyệt qua và sử dụng hộp thoại Mở tệp để định vị tệp bạn muốn nhập. Chỉ định cách bạn muốn lưu trữ dữ liệu đã nhập