Update dữ liệu từ file tổng hợp sang các File chi tiết (1 người xem)

  • Thread starter Thread starter emcha
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

emcha

Thành viên mới
Tham gia
23/10/11
Bài viết
15
Được thích
0
Xin chào tất các ACE diễn đàn.
Nhờ các ACE trong diễn đàn viết giùm tôi cái Code update dữ liệu từ File tổng hợp sang các file chi tiết. Tên file chi tiết có trong 1 cột của file tổng hợp. Và File chi tiết đóng. Tôi có gửi kèm thư mục chứa các file. Trân trọng cảm ơn
 

File đính kèm

Cái này như kiểu là tách riêng ra từng loại máy từ file tổng hợp ra file riêng theo Form mẫu đúng không bạn ./
 
Upvote 0
Vâng. Vì khi nhập thì nhập vào File tổng hợp chi phí trước. Khi nhập xong thì nó được update luôn vào các file chi tiết
 
Upvote 0
Vâng. Vì khi nhập thì nhập vào File tổng hợp chi phí trước. Khi nhập xong thì nó được update luôn vào các file chi tiết
Mình đang tách file ra theo tên máy không biết có đúng không. Bạn kiểm tra lại xem nha
 

File đính kèm

Upvote 0
Cảm ơn bạn đã giúp.
ý tôi là khi tôi nhập dữ liệu vào File tổng hợp thì dữ liệu đó được cập nhật luôn vào file chi tiết mặc dù File chi tiết vẫn đóng. Hai bảng này ở 2 File khác nhau ah.
 
Upvote 0
Cảm ơn bạn đã giúp.
ý tôi là khi tôi nhập dữ liệu vào File tổng hợp thì dữ liệu đó được cập nhật luôn vào file chi tiết mặc dù File chi tiết vẫn đóng. Hai bảng này ở 2 File khác nhau. Và tôi đặt tên file trùng với tên của từng loại thiết bị trong Cột C. Rật mong nhận được sự giúp đỡ
 
Upvote 0
Cảm ơn bạn đã giúp.
ý tôi là khi tôi nhập dữ liệu vào File tổng hợp thì dữ liệu đó được cập nhật luôn vào file chi tiết mặc dù File chi tiết vẫn đóng. Hai bảng này ở 2 File khác nhau. Và tôi đặt tên file trùng với tên của từng loại thiết bị trong Cột C. Rật mong nhận được sự giúp đỡ
Tại sao lại update? tạo 1 file mới ko đc sao? hay file của bạn còn các sheet khác?
Thường thì tôi hay thấy lấy dữ liệu từ file đang đóng, chứ update dữ liệu vào file đang đóng thì ít nghe.
Mở ngầm có đc không vậy? Nếu các file update có mỗi 1 sheet thì tốt nhất là chạy code tạo mới file luôn cho tiện.
 
Upvote 0
Các file chi tiết của mình còn nhiều sheet khác. Vâng dúng là mở ngầm.
 
Upvote 0
Cảm ơn bạn đã giúp.
ý tôi là khi tôi nhập dữ liệu vào File tổng hợp thì dữ liệu đó được cập nhật luôn vào file chi tiết mặc dù File chi tiết vẫn đóng. Hai bảng này ở 2 File khác nhau. Và tôi đặt tên file trùng với tên của từng loại thiết bị trong Cột C. Rật mong nhận được sự giúp đỡ
Rất là xin lỗi bạn mình hiểu update = cập nhật. Chứ anh Quanluu1989 tham gia là bài của bạn có hướng giải quyết rồi đó. Chúc mừng bạn he
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Rất là xin lỗi bạn mình hiểu update = cập nhật. Chứ anh Quanluu1989 tham gia là bài của bạn có hướng giải quyết rồi đó. Chúc mừng bạn he
Hi, bạn cứ nói quá. mà update = cập nhật mà?
Bây h mình đang phê, cái này để mai mình thử code xem sao. hi
 
Upvote 0
Các file chi tiết của mình còn nhiều sheet khác. Vâng dúng là mở ngầm.
Bạn thử code này, các file phải nằm trong cùng 1 folder
Mã:
Sub update()
    Dim cn As Object, rs As Object, arr, lastrow As Integer, wb As Workbook
    Dim Tmp, i As Integer
    Application.ScreenUpdating = False
    lastrow = Range("C65000").End(3).Row
    arr = Range("C7:C" & lastrow).Value
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";")
    Set dic = CreateObject("Scripting.Dictionary")
    With dic
        For i = 1 To UBound(arr)
            Tmp = arr(i, 1)
            If Not .exists(Tmp) Then
                .Add Tmp, i
                Set rs = cn.Execute("select f1, f4, f6, f7, f8, f10 from [Tong hop$B7:K] where f2 like '" & Tmp & "'")
                Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & Tmp & ".xls")
                wb.Sheets("Bao duong sua chua").Range("A4").CopyFromRecordset rs
                rs.Close
                wb.Close True
            End If
        Next
    End With
    cn.Close: Set cn = Nothing: Set rs = Nothing: Set dic = Nothing
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Bạn thử code này, các file phải nằm trong cùng 1 folder
Mã:
Sub update()
    Dim cn As Object, rs As Object, arr, lastrow As Integer, wb As Workbook
    Dim Tmp, i As Integer
    Application.ScreenUpdating = False
    lastrow = Range("C65000").End(3).Row
    arr = Range("C7:C" & lastrow).Value
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";")
    Set dic = CreateObject("Scripting.Dictionary")
    With dic
        For i = 1 To UBound(arr)
            Tmp = arr(i, 1)
            If Not .exists(Tmp) Then
                .Add Tmp, i
                Set rs = cn.Execute("select f1, f4, f6, f7, f8, f10 from [Tong hop$B7:K] where f2 like '" & Tmp & "'")
                Set wb = [COLOR=#ff0000][B]Workbooks.Open[/B][/COLOR](ThisWorkbook.Path & "\" & Tmp & ".xls")
                wb.Sheets("Bao duong sua chua").Range("A4").CopyFromRecordset rs
                rs.Close
                wb.Close True
            End If
        Next
    End With
    cn.Close: Set cn = Nothing: Set rs = Nothing: Set dic = Nothing
    Application.ScreenUpdating = True
End Sub

Mình mới coi code tại sao dùng ADO mà lại còn sử dụng dòng màu đỏ vậy...Sử dụng Dic lấy Duy nhất tên File xong ghi vào File đó luôn = ADO

ADO ...Nói vậy thôi chứ cứ F, nul, good ...link tinh với mình là tịt
 
Upvote 0
Mình mới coi code tại sao dùng ADO mà lại còn sử dụng dòng màu đỏ vậy...Sử dụng Dic lấy Duy nhất tên File xong ghi vào File đó luôn = ADO

ADO ...Nói vậy thôi chứ cứ F, nul, good ...link tinh với mình là tịt
Ý anh là insert into? em không khoái cái đó lắm với em không dùng bao h. Em dùng ADO để lọc và lấy ra trường cần thiết cho nhanh thui. hi
good là cái gì vấy anh?
 
Upvote 0
Mình rất cảm ơn đã giúp đã.
Mình copy code dán vào file Tong hop sua chua mà lối không chạy được. Mình mới chập chững tìm hiểu về VBA mong các bạn giúp
 
Upvote 0
dầu tiên là Run-time error '3706'
 
Lần chỉnh sửa cuối:
Upvote 0
dầu tiên là Run-time error '3706'
Bạn đưa ra mỗi dòng thể thì chịu rùi. File gốc của bạn có giống với file mẫu bạn đưa lên ko? bạn gửi lại 1 file tổng và 1 file con mình coi xem thế nào. Không thì khó bắt bệnh lắm.
 
Upvote 0
Nhờ bạn giúp cho mình. Lúc chạy thì bị lỗi mình gửi cả folder lên đây nhé
 

File đính kèm

Upvote 0
Nhờ bạn giúp cho mình. Lúc chạy thì bị lỗi mình gửi cả folder lên đây nhé
Mình tải về và chạy có thấy báo lỗi nào đâu nhỉ?
Bạn dùng office bao nhiêu? nếu 2007>> thì thử thay dòng cũ bằng dòng này coi
Mã:
cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom