Đầ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 Sub2. 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 Sub3. 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
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