Tổng hợp dữ liệu từ nhiều file excel vào 1 file không cần mở file

Liên hệ QC

Hainguyen171188

Thành viên mới
Tham gia
1/5/20
Bài viết
5
Được thích
0
Gửi các anh chị xem giúp. Hiện tại mình cần tổng hợp các dữ liệu từ các file form giống nhau.
Nhưng chỉ lấy giá trị trong bảng A17:p24( hoặc có thể nhiều dòng hơn) sau đó ghép lại vào file tổng và chỉ ra đường link của file đã copy. mình có tham khảo 1 số code, nhưng chỉ copy được toàn bộ dữ liệu trong file.
Anh chị em xem có cách nào giải quyết bài này giúp mình với. cảm ơn
 

File đính kèm

  • Tong hop du lieu file.rar
    84 KB · Đọc: 39
Gửi các anh chị xem giúp. Hiện tại mình cần tổng hợp các dữ liệu từ các file form giống nhau.
Nhưng chỉ lấy giá trị trong bảng A17:p24( hoặc có thể nhiều dòng hơn) sau đó ghép lại vào file tổng và chỉ ra đường link của file đã copy. mình có tham khảo 1 số code, nhưng chỉ copy được toàn bộ dữ liệu trong file.
Anh chị em xem có cách nào giải quyết bài này giúp mình với. cảm ơn
Thay đoạn code này vào thử xem sao
Mã:
Sub Main()
  Dim vFile, FileItem, aRes, Target As Range
  Dim FileName As String, SheetName As String, RangeAddress As String
  On Error Resume Next
  vFile = Application.GetOpenFilename("Excel File, *.xls; *.xlsx; *.xlsm", , , , True)
  If TypeName(vFile) = "Variant()" Then
    SheetName = "Sheet1": RangeAddress = "A17:P24"
    For Each FileItem In vFile
      FileName = CStr(FileItem)
      If UCase(FileName) <> UCase(ThisWorkbook.FullName) Then
        aRes = GetData(FileName, SheetName, RangeAddress, False, False)
        If IsArray(aRes) Then
          Set Target = Sheet1.Range("B60000").End(xlUp).Offset(1)
          Target.Resize(UBound(aRes, 1) + 1, UBound(aRes, 2) + 1).Value = aRes
        End If
      End If
    Next
    MsgBox "Done!"
  End If
End Sub
 
Thay đoạn code này vào thử xem sao
Mã:
Sub Main()
  Dim vFile, FileItem, aRes, Target As Range
  Dim FileName As String, SheetName As String, RangeAddress As String
  On Error Resume Next
  vFile = Application.GetOpenFilename("Excel File, *.xls; *.xlsx; *.xlsm", , , , True)
  If TypeName(vFile) = "Variant()" Then
    SheetName = "Sheet1": RangeAddress = "A17:P24"
    For Each FileItem In vFile
      FileName = CStr(FileItem)
      If UCase(FileName) <> UCase(ThisWorkbook.FullName) Then
        aRes = GetData(FileName, SheetName, RangeAddress, False, False)
        If IsArray(aRes) Then
          Set Target = Sheet1.Range("B60000").End(xlUp).Offset(1)
          Target.Resize(UBound(aRes, 1) + 1, UBound(aRes, 2) + 1).Value = aRes
        End If
      End If
    Next
    MsgBox "Done!"
  End If
End Sub
Bài đã được tự động gộp:

Cảm ơn bác. em đã thực hiện và thành công. Cảm ơn sự chỉ bảo của bác.
Trong trường hợp các vùng dữ liệu thay đổi không giống nhau ( ko chỉ từ A17:p24) chỉ lấy dữ liệu trong table để tổng hợp. thì có cách nào khác không ạ. chỉnh
RangeAddress = "A17:p24" => range address= table?
 
Bài đã được tự động gộp:


Cảm ơn bác. em đã thực hiện và thành công. Cảm ơn sự chỉ bảo của bác.
Trong trường hợp các vùng dữ liệu thay đổi không giống nhau ( ko chỉ từ A17:p24) chỉ lấy dữ liệu trong table để tổng hợp. thì có cách nào khác không ạ. chỉnh
RangeAddress = "A17:p24" => range address= table?
Thì cứ sửa thử, nếu chạy được thì là được, nếu không được thì là không đươc.
 
Thì cứ sửa thử, nếu chạy được thì là được, nếu không được thì là không đươc.
Anh Hải ơi, cho em hỏi ý này:
Anh giúp em code vba để copy nhiều file excel từ Thư mục A đến Thư mục B, và có đoạn check nếu có file trùng ( file đã có trong thư mục B) thì bóa và dừng chương trình.
 
1. Bạn không nên chen ngang bài người khác nếu câu hỏi không liên quan chủ đề của topic
2. Mỗi tuần mình chỉ ngồi máy tính một ngày thứ hai thôi, đa số mình xem bài bằng điện thoại nên không viết code được.
3. Trên GPE có sẵn mọi thứ, chịu khó tìm và ráp code vô cho đúng nhu cầu của mình sẽ mau biết thôi. Tự viết code sẽ thấy sướng khi mình giải quyết được vấn đề. Yêu cầu của bạn khá đơn giản
4. Nếu vẫn muốn nhờ viết code thì hãy mở topic mới nhé. Sẽ có nhiều người trợ giúp. Không nên gọi đích danh bất kỳ thành viên nào.
Thân
 
Web KT
Back
Top Bottom