chisinhvnn
Thành viên tiêu biểu
- Tham gia
- 7/3/08
- Bài viết
- 479
- Được thích
- 104
Dạ file dữ liệu cần muốn lấy anh (File A).
Vậy file B đâu bạn?Dạ file dữ liệu cần muốn lấy anh (File A).
Dạ tạo file bất kỳ được anh. Nhờ anh giúp đỡVậy file B đâu bạn?
Nếu lấy cả các sheet thì chỉ cần đổi tên file là xong.Nhờ các anh chị giúp đoạn code để lấy dữ liệu các sheet trên file Dơn gia để đưa vào một Mãng trên file B mà không cần mở file Don gia Xin cảm ơn
mình không hểu ý anh lámNếu lấy cả các sheet thì chỉ cần đổi tên file là xong.
Nhờ các anh chị giúp đoạn code để lấy dữ liệu các sheet trên file Dơn gia để đưa vào một Mãng trên file B mà không cần mở file Don gia Xin cảm ơn
Sub DONVE1FILE() 'L?y d? li?u t? 1 Workbook khác
Dim wb As Workbook
Dim sh As Worksheet, ws As Worksheet
Dim sPat As String, swb As String
Dim lr&, col&, d&
Application.DisplayAlerts = False
Set sh = Sheets("TONGHOP") ' ten sh cân dôn du lieu vê
sh.Range("A1: F100000").ClearContents
sPat = "C:\Users\Admin\Downloads\" ' lây duong dan neu o v? trí khác thì thay dôi
swb = "Don gia.xlsx" ' láy file cân don vê 1 sh o 1 file khác
Set wb = Workbooks.Open(sPat & swb)
t = 1
For Each ws In wb.Worksheets
If ws.Cells(2, 1) <> Empty Then
If t = 1 Then
ws.UsedRange.Copy ThisWorkbook.Sheets("TONGHOP").Range("A1")
Else
lr = ThisWorkbook.Sheets("TONGHOP").Range("A" & Rows.Count).End(3).Row
d = ws.UsedRange.Rows.Count
col = ws.UsedRange.Columns.Count
ws.Range(ws.Cells(2, 1), ws.Cells(d, col)).Copy ThisWorkbook.Sheets("TONGHOP").Range("A" & lr + 1)
End If
End If
t = t + 1
Next ws
wb.Close False
MsgBox " Xong"
End Sub
[code]
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 ơnFile Dongia không mở, file B chưa có, rốt cuộc code chứa trong file nào?
Cám ơn bạn đã nhắc đến tôi, nhưng loại bài thế này tôi chưa từng viết code nên không dám nhận.hãy gủi lời cảm ơn đến các anh chị em trong BQT diễn đàn và cá nhân các PTM, ...
let
FName= "E:\Data\ThanhMy\DOWNLOAD\Don gia.xlsx",
Source = Table.Combine({Table.PromoteHeaders(Excel.Workbook(File.Contents(FName), null, true){[Item="GIA CAY",Kind="Sheet"]}[Data],
[PromoteAllScalars=true]),
Table.PromoteHeaders(Excel.Workbook(File.Contents(FName), null, true) {[Item="GIA DAT",Kind="Sheet"]}[Data],
[PromoteAllScalars=true]),
Table.PromoteHeaders(Excel.Workbook(File.Contents(FName), null, true){[Item="GIA NHA",Kind="Sheet"]}[Data],
[PromoteAllScalars=true]),
Table.PromoteHeaders(Excel.Workbook(File.Contents(FName), null, true){[Item="HO TRO KHAC",Kind="Sheet"]}[Data],
[PromoteAllScalars=true])})
in Source
Cám ơn bạn đã nhắc đến tôi, nhưng loại bài thế này tôi chưa từng viết code nên không dám nhận.
Với bài này và với phương pháp Power query thì tạo 1 query với lệnh sau:
PHP:let FName= "E:\Data\ThanhMy\DOWNLOAD\Don gia.xlsx", Source = Table.Combine({Table.PromoteHeaders(Excel.Workbook(File.Contents(FName), null, true){[Item="GIA CAY",Kind="Sheet"]}[Data], [PromoteAllScalars=true]), Table.PromoteHeaders(Excel.Workbook(File.Contents(FName), null, true) {[Item="GIA DAT",Kind="Sheet"]}[Data], [PromoteAllScalars=true]), Table.PromoteHeaders(Excel.Workbook(File.Contents(FName), null, true){[Item="GIA NHA",Kind="Sheet"]}[Data], [PromoteAllScalars=true]), Table.PromoteHeaders(Excel.Workbook(File.Contents(FName), null, true){[Item="HO TRO KHAC",Kind="Sheet"]}[Data], [PromoteAllScalars=true])}) in Source
Lưu ý: tiêu đề cả 4 sheet phải giống nhau, hiện tại sheet giá nhà không giống 3 sheet còn lại
Em biết là trong code chắc có mở file, nhưng khi gán code trên một Button gì đó thì chắc không thấy file mở. Nhờ anh giúp đỡ em. Cảm ơn anhAi bảo bạn rằng ADO sẽ không mở file ra vậy? Đưa đoạn code dùng ADO mà không mở file xem.
let
FName="D:\MyPham\MY BOOK\MCode-PowerQuery\Don gia.xlsx",
Source = Table.SelectRows(Excel.Workbook(File.Contents(FName), null, true),each ([Kind] = "Sheet"))[Data],
List1 = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
ListColumns = Table.ColumnNames(List1{0}[Column1]),
List2 = Table.PromoteHeaders(Table.ExpandTableColumn(List1,"Column1",ListColumns)),
Ketqua = Table.SelectRows(List2, each ([MA] <> "MA"))
in
Ketqua
Thêm 1 trường dữ liệu của Sheet nào nữa thì đẹp ạ.Một cách khác của Power query không cần lấy hết sheet rồi combine lại. Cách ở bài #12 phải biết số lượng sheet và tên sheet.
Với cách mới này thì bao nhiêu sheet cũng lấy hết và không cần biết tên sheet, file nguồn thêm sheet, query cũng tự động thêm vào
PHP:let FName="D:\MyPham\MY BOOK\MCode-PowerQuery\Don gia.xlsx", Source = Table.SelectRows(Excel.Workbook(File.Contents(FName), null, true),each ([Kind] = "Sheet"))[Data], List1 = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error), ListColumns = Table.ColumnNames(List1{0}[Column1]), List2 = Table.PromoteHeaders(Table.ExpandTableColumn(List1,"Column1",ListColumns)), Ketqua = Table.SelectRows(List2, each ([MA] <> "MA")) in Ketqua
Để thử xem sao,Thêm 1 trường dữ liệu của Sheet nào nữa thì đẹp ạ.
Phải dùng vòng lặp để mỗi table con add 1 columnThêm 1 trường dữ liệu của Sheet nào nữa thì đẹp ạ.
let
FName="D:\MyPham\MY BOOK\MCode-PowerQuery\Don gia.xlsx",
Source = Table.SelectRows(Excel.Workbook(File.Contents(FName), null, true),each ([Kind] = "Sheet")),
SourceData=Source[Data],
SheetName=Source[Item],
SheetNum={0..List.Count(SheetName)-1},
DataN= List.Transform(SheetNum, (i) =>
let
Data0 = Source[Data]{i},
Datai = Table.AddColumn(Data0, "Sheet", each SheetName{i})
in Datai),
List1 = Table.FromList(DataN, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
ListColumns = Table.ColumnNames(List1{0}[Column1]),
List2 = Table.PromoteHeaders(Table.ExpandTableColumn(List1,"Column1",ListColumns)),
Ketqua = Table.SelectRows(List2, each ([MA] <> "MA"))
in
Ketqua
let
FName="D:\MyPham\MY BOOK\MCode-PowerQuery\Don gia.xlsx",
Source = Table.SelectRows(Excel.Workbook(File.Contents(FName), null, true),each ([Kind] = "Sheet")),
SourceData=Source[Data],
SheetName=Source[Item],
SheetNum={0..List.Count(SheetName)-1},
DataN= List.Transform(SheetNum, (i) =>
let
Data0 = Source[Data]{i},
Datai = Table.AddColumn(Table.PromoteHeaders(Data0), "SheetName", each SheetName{i})
in Datai),
List1 = Table.FromList(DataN, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
ListColumns = Table.ColumnNames(List1{0}[Column1]),
List2 = Table.ExpandTableColumn(List1,"Column1",ListColumns)
in
List2