Hỏi thêm NGọc:Em có 1 vi dụ này muốn nhờ các anh chị xem dùm. Câu hỏi cụ thể trong file NhapLieu.
Hỏi thêm NGọc:
1. Trước khi cập nhật các dữ liệu có sẵn có xóa không hay nối tiếp?
2. Các File A hoặc B hoặc C không cần mở. Vậy khi cập nhật nó mở ra, cập nhật xong đóng lại được không?
Góp ý: Ngọc lần sau đưa file có dữ liệu đủ để mọi người giúp (các file A, B, C chẳng có dữ liệu gì cả)
Sao Ngọc không "bịa" dữ liệu ở các file A, B, C cho đỡ mất công người giúp ?Cám ơn anh @viehoai nhiều!
- File nhập liệu khi nhập dữ liệu xong và chọn nút CapNhat thì nó sẽ xóa dữ liệu đó đi.
- Các file A, B, C không cần mở anh.
Ở file NhapLieu em có "bịa" 1 ít dữ liệu đó anh @viehoai!?
Nhờ anh và các anh chị xem dùm em nhé!
Theo mình nghĩ thì đề bài yêu cầu cập nhật tiếp vào các file A+B+C rồi xóa dữ liệu ở file nhập liệu, hỏng biết có phải vậy không tác giả?Sao Ngọc không "bịa" dữ liệu ở các file A, B, C cho đỡ mất công người giúp ?
Ý anh @dom đúng ý em rùi.Theo mình nghĩ thì đề bài yêu cầu cập nhật tiếp vào các file A+B+C rồi xóa dữ liệu ở file nhập liệu, hỏng biết có phải vậy không tác giả?
Nếu bạn chịu chỉnh sửa tên sheet giống nhau và xóa bỏ khoảng trống và tiêu đề của các file A+B+C thì mình sẽ có cách giúp bạn.Ý anh @dom đúng ý em rùi.
Em test thử file của anh @viehoai rùi. Nhưng nó vẫn còn lỗi:
- Nó không cập nhật nối tiếp dữ liệu vào các file A, B, C?
Ý em là: Khi nhập liệu đầy đủ ở file NhapLieu va chọn nút CapNhat thì nó sẽ tự động cập nhật dữ liệu đó đển file cùng tên trong ô A1 và nó sẽ tự xóa dữ liệu ở file NhapLieu này luôn để nhập tiếp ah!
Bạn dùng thử code sau:Không hiểu ý anh @dom lắm. Anh cứ làm cho em một ví dụ nhé!
Public cnn As New ADODB.Connection
Sub CapNhat()
Dim rs As New ADODB.Recordset
Dim i, r As Integer
Set cnn = New ADODB.Connection
r = Range("A65000").End(xlUp).Row
With cnn
.ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & ThisWorkbook.Path & "\" & Range("F1").Value & ".xls;Extended Properties=Excel 8.0;"
.CursorLocation = adUseClient
.Open
End With
Set rs = Nothing
rs.Open "Select * from [UP$]", cnn, 1, 3
For i = 2 To r
With rs
.AddNew
![MA_SP] = Range("A" & i).Value
!TEN_SP = Range("B" & i).Value
!SL_SP = Range("C" & i).Value
.Update
End With
Next
Range("A2:C65000").ClearContents
Set rs = Nothing
cnn.Close
Set cnn = Nothing
End Sub
Sao em nhấn nút cập nhật nó đứng yên nguyên vậy anh Dom?
Tốc độ thật khủng, cho em hỏi cái này cập nhật dữ liệu dùng ADO phải không anh? Nếu có thể anh giải thích sơ sơ về nó để tụi em học hỏi thêm, ThanksNó sẽ ghi dữ liệu qua cái file mà bạn chọn tại cell F1, bạn mở file đó lên thử nhé.
Bạn down ADO Toàn tập của anh Duyệt về ngâm cứu, hoặc vào link sau tham khảo.Tốc độ thật khủng, cho em hỏi cái này cập nhật dữ liệu dùng ADO phải không anh? Nếu có thể anh giải thích sơ sơ về nó để tụi em học hỏi thêm, Thanks
1./ Tác giả yêu cầu là nhập liệu không cần mở file mà bạn.Cho mình góp vui cách đơn giản này nhé. Cách này với những bạn không giỏi sẽ có thể chỉnh sữa code khi muốn thêm files mới
Bạn nói đúng cái này mình có thể giúp các bạn mới gia nhập code học từ tự Với đoạn code trên mình có thể rút gọn thế nàyCho mình góp vui cách đơn giản này nhé. Cách này với những bạn không giỏi sẽ có thể chỉnh sữa code khi muốn thêm files mới
Sub updata()
Range("A4:A" & [a65000].End(xlUp).Row).Resize(, 3).Copy
With Workbooks.Open(ThisWorkbook.Path & "\" & [A1].Value & ".xls")
Sheets("sheet1").[a65000].End(xlUp).Offset(1).PasteSpecial 3
.Close (True)
End With
Application.CutCopyMode = False
End Sub