Gộp dữ liệu trên các sheet trên file Dongia để đưa vào 1 Mãng trên file B mà không cần mở file Dongia

Liên hệ QC
Anh cho em hỏi, chỗ [Kind] = "Sheet", thì Sheet ở đây có phân biệt Chart sheet và Worksheet không?
Rất tiếc là không. Thế nên file dữ liệu tốt nhất không vẽ vời báo cáo hay biểu đồ. Tốt nhất là format as table tất cả bảng dữ liệu và lọc [Kind] = "Table"

1627612965979.png
 
Trong tài liệu chỗ Kind đó có danh sách cụ thể không anh?
Trong tài liệu hàm M tiếng Anh mà tôi dùng thì chỉ có cú pháp hàm để ra kết quả, không chi tiết hoá kết quả. Mà như hình bài trên thì chart sheet bị đánh đồng Kind là "sheet". Khi chưa lọc thì chỉ có 2 Kind Sheet và Table
 
Dạ, file B anh tạo file mới anh. Anh làm giúp bằng ADO giúp em với. Em cảm ơn
Bạn thử với code sau nhé:

Mã:
Sub LayDL_HLMT()
    Dim strPath As String
    strPath = "C:\Users\HP\Downloads\Don gia.xlsx" 'Chinh duong dan den file 'Don gia.xlsx'
    With CreateObject("ADODB.Connection")
        .Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";Extended Properties=""Excel 12.0;HDR=No""")
        Sheet1.Range("A2").CopyFromRecordset .Execute("Select * From [GIA NHA$A2:F] Union All Select * From [GIA CAY$A2:F] Union All Select * From [GIA DAT$A2:F] Union All Select * From [HO TRO KHAC$A2:F]")
    End With
End Sub
 
Ý em hỏi "danh sách cụ thể" của Kind đó là gì. Ngoài (Sheet, Table) thì còn loại nào nữa không anh? (Ví dụ Range, Name...)
Không "chi tiết hoá kết quả" tức là không có "danh sách cụ thể" :p :p :p
Range: Chưa từng thấy
Name: có từng xài 1 Kind là DefinedName, Chỉ liệt kê Name tĩnh, không chơi name động

1627618538281.png
 
Lần chỉnh sửa cuối:
Bạn thử với code sau nhé:

Mã:
Sub LayDL_HLMT()
    Dim strPath As String
    strPath = "C:\Users\HP\Downloads\Don gia.xlsx" 'Chinh duong dan den file 'Don gia.xlsx'
    With CreateObject("ADODB.Connection")
        .Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";Extended Properties=""Excel 12.0;HDR=No""")
        Sheet1.Range("A2").CopyFromRecordset .Execute("Select * From [GIA NHA$A2:F] Union All Select * From [GIA CAY$A2:F] Union All Select * From [GIA DAT$A2:F] Union All Select * From [HO TRO KHAC$A2:F]")
    End With
End Sub
Cảm ơn anh. Nhưng kết quả chưa đúng anh. sheet Gia Nhà, cột Hệ số 1,08, khi copy xong thì nó thành 108 anh. Cho em hỏi thêm. Có thể gán trực tiếp trên biến luôn được không? không gán vào sheet nữa. Nhờ anh giúp đỡ.
 
Cảm ơn anh. Nhưng kết quả chưa đúng anh. sheet Gia Nhà, cột Hệ số 1,08, khi copy xong thì nó thành 108 anh.
Nó lấy dữ liệu theo kiểu chuẩn không phải kiểu của Tiếng Việt nhé bạn.

Cho em hỏi thêm. Có thể gán trực tiếp trên biến luôn được không? không gán vào sheet nữa. Nhờ anh giúp đỡ.
Có thể gán nó vào mảng như sau nha bạn.

Mã:
Sub LayDL_HLMT()
    Dim strPath As String
    Dim Arr() As Variant
    strPath = "C:\Users\HP\Downloads\Don gia.xlsx" 'Chinh duong dan den file 'Don gia.xlsx'
    With CreateObject("ADODB.Connection")
        .Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";Extended Properties=""Excel 12.0;HDR=No""")
        Arr() = .Execute("Select * From [GIA NHA$A2:F] Union All Select * From [GIA CAY$A2:F] Union All Select * From [GIA DAT$A2:F] Union All Select * From [HO TRO KHAC$A2:F]").Getrows
    End With
End Sub
 
Web KT
Back
Top Bottom