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 ”:

img1

Để 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

img2

  • 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

img3

  • Để 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

img4

  • Sao chép đoạn mã sau vào ThisWorkbook (Open.xls)

Private Sub Workbook_Open()

Run "Importdata"

End Sub

img5

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”:

img6

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.

rar icon

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]