Kéo dữ liệu từ sổ làm việc đã đóng
Kết xuất dữ liệu từ một tệp đã đóng trong một sổ làm việc khác là một yêu cầu phổ biến của hầu hết người dùng excel. Họ muốn lấy hoặc hợp nhất dữ liệu từ các tệp đã đóng; tuy nhiên, điều này là không thể. Có một cách giải quyết giúp giải quyết vấn đề này. Giải pháp là sử dụng mã Macro.
Câu hỏi: Hàng ngày, tôi dành thời gian sao chép dữ liệu từ tệp này sang tệp khác. Có hai tệp “Open.xls” & “Closed.xls” và tôi muốn sao chép dữ liệu từ “Closed.xls” sang “Open.xls” qua mã VBA.
===
Những điều chính cần biết:
Điều đầu tiên là chúng ta nên biết “Phạm vi sử dụng” của sổ làm việc đã đóng, tức là “Closed.xls” trong sổ làm việc đang mở cho ví dụ: “Open.xls” Chúng ta có thể sử dụng hàm IF trong usedrange của sổ làm việc “Closed.xls” trong sổ làm việc “Open.xls” và nó sẽ trích xuất dữ liệu từ sổ làm việc “Closed.xls” * Nếu ô tham chiếu trống, #N / A được đặt đúng vị trí. Sử dụng phương thức specialcells, sau đó bạn có thể xóa tất cả các lỗi # N / A và thay đổi công thức thành các giá trị Để bắt đầu với nó, chúng tôi sẽ lưu hai tệp excel 1) Open.xls 2) Closed.xls trong đường dẫn “D: \ Test Thư mục ”Sau đây là ảnh chụp nhanh của sổ làm việc“ Closed.xls ”:
Để tự động lưu dữ liệu từ tệp “Closed.xls” vào tệp “Open.xls”, chúng ta cần làm theo các bước dưới đây để khởi chạy trình soạn thảo VB Nhấp vào tab Nhà phát triển Từ nhóm Mã, chọn Visual Basic
-
Sao chép đoạn mã dưới đây trong ThisWorkbook (Closed.xls)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) 'Put in the UsedRange Address of Sheet1 Closed.xls (this workbook)' --- Comment Sheet2.Cells(1, 1) = Sheet1.UsedRange.Address End Sub
-
Để lấy dữ liệu trong “Open.xls”, hãy sao chép đoạn mã sau trong Mô-đun chuẩn
Sub Importdata() Dim AreaAddress As String Sheet1.UsedRange.Clear Sheet1.Cells(1, 1) = "= 'D:\Test Folder\" & "[Closed.xls]Sheet2'!RC" AreaAddress = Sheet1.Cells(1, 1) With Sheet1.Range(AreaAddress) .FormulaR1C1 = "=IF('D:\Test Folder\" & "[Closed.xls]Sheet1'!RC="""",NA(),'D:\Test Folder\" & _ "[Closed.xls]Sheet1'!RC)" On Error Resume Next .SpecialCells(xlCellTypeFormulas, xlErrors).Clear On Error GoTo 0 .Value = .Value End With End Sub
-
Sao chép đoạn mã sau vào ThisWorkbook (Open.xls)
Private Sub Workbook_Open() Run "Importdata" End Sub
Bây giờ tất cả các mã VBA đã được thiết lập; tất cả những gì chúng ta cần làm là mở tên tệp “Open.xls”. Sau đây là ảnh chụp nhanh của tệp “Open.xls”:
Mã không giới hạn ở bản sao ô từ A1.usedrange; mã sẽ chọn phạm vi bắt đầu và sẽ hoạt động hoàn toàn tốt. Các tệp có sẵn để tải xuống và chúng tôi khuyên bạn nên thử.
===
Kết luận: Với mã VBA, chúng tôi có thể tự động hóa tác vụ trích xuất dữ liệu mà không cần mở sổ làm việc đích và chúng tôi tự tiết kiệm khỏi việc sao chép & dán thủ công.
Nếu bạn thích blog của chúng tôi, hãy chia sẻ nó với bạn bè của bạn trên Facebook. Và bạn cũng có thể theo dõi chúng tôi trên Twitter và Facebook.
Chúng tôi rất muốn nghe ý kiến từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện, bổ sung hoặc đổi mới công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi tại [email protected]