Ghi dữ liệu từ file excel đang mở vào file excel đang đóng (2 người xem)

Liên hệ QC

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

hong1989

Thành viên chính thức
Tham gia
10/2/14
Bài viết
53
Được thích
2
Mình có sưu tập được code của anh Hai lua mien tay về việc ghi dữ liệu từ file đang mở vào file đang đóng. nhưng loay hoay mãi không biết cách nào sủa để áp dụng được
Mọi người giúp mình sửa đoạn code này với
Yêu cầu: Mở rộng vùng phạm vi cần update, xóa hết dữ liệu cũ để update dữ liệu mới

Sub Test()
Dim ado As Object
Set ado = CreateObject("ADODB.Connection")
ado.Open ("Provider=Microsoft.JET.OLEDB.4.0;Data Source=""" _
& ThisWorkbook.Path & "\Data.xls" & """;Extended Properties=""Excel 8.0;HDR=No"";")
ado.Execute "UPDATE [Sheet1$A1:A1] SET F1 = '" & Sheet1.[A1] & "'"
ado.Close


End Sub

Rất cám ơn mọi người
 
Mình có sưu tập được code của anh Hai lua mien tay về việc ghi dữ liệu từ file đang mở vào file đang đóng. nhưng loay hoay mãi không biết cách nào sủa để áp dụng được
Mọi người giúp mình sửa đoạn code này với
Yêu cầu: Mở rộng vùng phạm vi cần update, xóa hết dữ liệu cũ để update dữ liệu mới

Sub Test()
Dim ado As Object
Set ado = CreateObject("ADODB.Connection")
ado.Open ("Provider=Microsoft.JET.OLEDB.4.0;Data Source=""" _
& ThisWorkbook.Path & "\Data.xls" & """;Extended Properties=""Excel 8.0;HDR=No"";")
ado.Execute "UPDATE [Sheet1$A1:A1] SET F1 = '" & Sheet1.[A1] & "'"
ado.Close


End Sub

Rất cám ơn mọi người
Phải có File thì mới có cái để test chứ ban!
 
Upvote 0
Mình muốn áp dụng ADO của file trên nhưng muốn mở rộng thêm dòng và cột dữ liệu. file ở trên chỉ cập nhật update được dữ liệu cho 1 ô. Thực tế công viêc của mình cần update từ file tổng đang mở xuống file nhỏ đang đóng. mình cũng tìm kiếm được 1 code dung vba những tốc độ chậm quá. rất mong sự giúp đỡ của bạn và mọi người
 
Upvote 0
Mình muốn áp dụng ADO của file trên nhưng muốn mở rộng thêm dòng và cột dữ liệu. file ở trên chỉ cập nhật update được dữ liệu cho 1 ô. Thực tế công viêc của mình cần update từ file tổng đang mở xuống file nhỏ đang đóng. mình cũng tìm kiếm được 1 code dung vba những tốc độ chậm quá. rất mong sự giúp đỡ của bạn và mọi người
Bạn đưa File giả lập có cấu trúc giống File thật lên đi, dữ liệu trong 1 File của bạn có bao nhiêu dòng bao nhiêu cột???
 
Upvote 0
Mình muốn áp dụng ADO của file trên nhưng muốn mở rộng thêm dòng và cột dữ liệu. file ở trên chỉ cập nhật update được dữ liệu cho 1 ô. Thực tế công viêc của mình cần update từ file tổng đang mở xuống file nhỏ đang đóng. mình cũng tìm kiếm được 1 code dung vba những tốc độ chậm quá. rất mong sự giúp đỡ của bạn và mọi người
miệng thì nói muốn mở rộng thêm nhiều dòng và cột . mà 2 file up lên mỗi file có đúng 1 cột và lèo tèo vài dòng ?
vậy thì bạn ráng đợi thêm mấy năm nữa chắc sẽ có người giúp .
mấy cái vụ ghi dữ liệu lên file đang đóng này , gặp file thật 100% cũng chưa chắc đã viết được code chạy đúng chứ đừng nói là làm ăn cái kiểu này .
 
Upvote 0
miệng thì nói muốn mở rộng thêm nhiều dòng và cột . mà 2 file up lên mỗi file có đúng 1 cột và lèo tèo vài dòng ?
vậy thì bạn ráng đợi thêm mấy năm nữa chắc sẽ có người giúp .
mấy cái vụ ghi dữ liệu lên file đang đóng này , gặp file thật 100% cũng chưa chắc đã viết được code chạy đúng chứ đừng nói là làm ăn cái kiểu này .
Chính xác đó! Với cái kiểu File này thì ráng đợi!--=0--=0--=0--=0
 
Upvote 0
Cám ơn 2 bạn đã nhăc nhở và cũng xin lỗi về sự chậm chễ. file trên là mình mượn của bác hai lúa miền tây. Dưới đây là link file giả lập với cấu trúc giống file thật trong file mình đã ghi yêu cầu của mình. Rất mong sự giúp đỡ của các bạn
Dưới đây là link tải về:
https://drive.google.com/file/d/0Bx6z3YcGDvh7MFFEWDVrVzFlRWs/view?pli=1
 
Upvote 0
Cám ơn 2 bạn đã nhăc nhở và cũng xin lỗi về sự chậm chễ. file trên là mình mượn của bác hai lúa miền tây. Dưới đây là link file giả lập với cấu trúc giống file thật trong file mình đã ghi yêu cầu của mình. Rất mong sự giúp đỡ của các bạn
Dưới đây là link tải về:
https://drive.google.com/file/d/0Bx6z3YcGDvh7MFFEWDVrVzFlRWs/view?pli=1
Không dùng ADO có được không????
 
Upvote 0
nếu muốn ghi dữ liệu A6:BB509 qua file Phan_hanh.xlsm thì trong file Phan_hanh.xlsm cần đóng khung hoặc tô màu vùng A6:BB510 rồi chạy code này
Mã:
Public Sub hello()
Dim strQue As String, Cnn As Object, lrs As Object, r As Long, fileFullname As String
Dim arr As Variant, c As Integer
Set Cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
fileFullname = ThisWorkbook.Path & "\Phan_hanh.xlsm"
arr = Sheet36.Range("A6:BB509").Value
strQue = "select * from [TT2$A6:BB510]"
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & fileFullname & _
           ";Extended Properties=""Excel 12.0;HDR=No;Readonly = False"""
Cnn.Open
lrs.LockType = 3
lrs.Open strQue, Cnn
For r = 1 To UBound(arr) Step 1
    For c = 1 To UBound(arr, 2) Step 1
        lrs("F" & c) = arr(r, c)
    Next
    lrs.movenext
Next
lrs.Update
lrs.Close
Cnn.Close
Set Cnn = Nothing
Set lrs = Nothing
MsgBox "done"
End Sub

đây là code dùng để ghi lên file đóng . file Phan_hanh.xlsm đang mở mà chạy code treo máy ráng chịu
 
Upvote 0
để cho chắc ăn thì nên ghi 1 kí tự bất kì nào đó lên ô A510 của file Phan_hanh.xlsm -> save -> đóng lại -> chạy code
 
Upvote 0
nếu muốn ghi dữ liệu A6:BB509 qua file Phan_hanh.xlsm thì trong file Phan_hanh.xlsm cần đóng khung hoặc tô màu vùng A6:BB510 rồi chạy code này
Mã:
Public Sub hello()
Dim strQue As String, Cnn As Object, lrs As Object, r As Long, fileFullname As String
Dim arr As Variant, c As Integer
Set Cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
fileFullname = ThisWorkbook.Path & "\Phan_hanh.xlsm"
arr = Sheet36.Range("A6:BB509").Value
strQue = "select * from [TT2$A6:BB510]"
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & fileFullname & _
           ";Extended Properties=""Excel 12.0;HDR=No;Readonly = False"""
Cnn.Open
lrs.LockType = 3
lrs.Open strQue, Cnn
For r = 1 To UBound(arr) Step 1
    For c = 1 To UBound(arr, 2) Step 1
        lrs("F" & c) = arr(r, c)
    Next
    lrs.movenext
Next
lrs.Update
lrs.Close
Cnn.Close
Set Cnn = Nothing
Set lrs = Nothing
MsgBox "done"
End Sub

đây là code dùng để ghi lên file đóng . file Phan_hanh.xlsm đang mở mà chạy code treo máy ráng chịu
1.Mình đã test thử code của bạn. Nhưng dữ liệu ghi sang file phan_hanh lại bắt đầu từ ô a1. Bạn có thể chỉ cho mình sửa code thế nào để việc ghi dữ liệu vào file phan_hanh bắt đầu từ ô A6 không?
2. Mình cũng thử việc ghi dữ liệu trong khi mở file phan_hanh đúng là máy treo luôn thât. Những mình thấy mấy file ADO của bác Hai lúa miền tây có thể ghi dữ liệu cả khi đóng lẫn mở. Tại khi làm việc không thể biết khi nào mọi người đang mở file được
Cuối cùng mạo muội xin bạn đã giúp thì giúp cho chót. Rất cám ơn bạn
 
Upvote 0
1.Mình đã test thử code của bạn. Nhưng dữ liệu ghi sang file phan_hanh lại bắt đầu từ ô a1. Bạn có thể chỉ cho mình sửa code thế nào để việc ghi dữ liệu vào file phan_hanh bắt đầu từ ô A6 không?
2. Mình cũng thử việc ghi dữ liệu trong khi mở file phan_hanh đúng là máy treo luôn thât. Những mình thấy mấy file ADO của bác Hai lúa miền tây có thể ghi dữ liệu cả khi đóng lẫn mở. Tại khi làm việc không thể biết khi nào mọi người đang mở file được
Cuối cùng mạo muội xin bạn đã giúp thì giúp cho chót. Rất cám ơn bạn

code trên đã được kiểm tra là để ghi dữ liệu lên vùng A6:BB509 của file phan_hanh
nếu bạn thấy file đó bị ghi từ ô A1 thì bạn phải up lại file phan_hanh khác lên đây để chứng minh lời bạn nói

ghi dữ liệu lên file excel đang mở trên máy khác là chuyện trò hề . người khác đang mở file excel đó trước bạn thì bạn chỉ có quyền đọc chứ làm gì được ghi mà chạy code ? nếu bạn muốn biết file đó có người nào đang mở hay không thì bạn tìm trên diễn đàn . có nhiều bài viết tương tự
 
Upvote 0
code trên đã được kiểm tra là để ghi dữ liệu lên vùng A6:BB509 của file phan_hanh
nếu bạn thấy file đó bị ghi từ ô A1 thì bạn phải up lại file phan_hanh khác lên đây để chứng minh lời bạn nói

ghi dữ liệu lên file excel đang mở trên máy khác là chuyện trò hề . người khác đang mở file excel đó trước bạn thì bạn chỉ có quyền đọc chứ làm gì được ghi mà chạy code ? nếu bạn muốn biết file đó có người nào đang mở hay không thì bạn tìm trên diễn đàn . có nhiều bài viết tương tự

Mình đã tài file minh test thử lên đây. hiện tại thấy ghi dữ liệu từ ô A1 của sheet TT2 file Phan_hanh. bạn xem giúp mình nhé
https://drive.google.com/file/d/0Bx6z3YcGDvh7aWdYUXR5SGJndjA/view?usp=sharing
 
Upvote 0
code trên đã được kiểm tra là để ghi dữ liệu lên vùng A6:BB509 của file phan_hanh
nếu bạn thấy file đó bị ghi từ ô A1 thì bạn phải up lại file phan_hanh khác lên đây để chứng minh lời bạn nói

ghi dữ liệu lên file excel đang mở trên máy khác là chuyện trò hề . người khác đang mở file excel đó trước bạn thì bạn chỉ có quyền đọc chứ làm gì được ghi mà chạy code ? nếu bạn muốn biết file đó có người nào đang mở hay không thì bạn tìm trên diễn đàn . có nhiều bài viết tương tự
Còn đây là file mình đã sưu tập của bác "hai lua mien tay". file cho phép ghi dữ liệu từ file nguồn tới file đích đang đóng hoặc mở. Tại công việc khi người khác đang mở bảng để làm mình vẫn có thể cập nhật dữ liệu sang file đấy được
https://drive.google.com/file/d/0Bx6z3YcGDvh7eUVUR3VvZHR4UW8/view?usp=sharing
 
Upvote 0
Mình đã tài file minh test thử lên đây. hiện tại thấy ghi dữ liệu từ ô A1 của sheet TT2 file Phan_hanh. bạn xem giúp mình nhé
https://drive.google.com/file/d/0Bx6z3YcGDvh7aWdYUXR5SGJndjA/view?usp=sharing
ngay ở cái file này bạn mở lên Clear vùng A1:BB5 -> save -> tắt file -> chạy code xem còn ghi lên A1 nữa không ?




Còn đây là file mình đã sưu tập của bác "hai lua mien tay". file cho phép ghi dữ liệu từ file nguồn tới file đích đang đóng hoặc mở. Tại công việc khi người khác đang mở bảng để làm mình vẫn có thể cập nhật dữ liệu sang file đấy được
https://drive.google.com/file/d/0Bx6z3YcGDvh7eUVUR3VvZHR4UW8/view?usp=sharing

tôi không có nhiều kiến thức như anh Hai Lúa Miền Tây . nhưng mà tôi không tin là code này ghi được dữ liệu khi máy khác đã mở file B.xls từ trước . ADO ghi dữ liệu chỉ khi file đang đóng thôi . bạn muốn có code ghi được dữ liệu khi người khác đang mở file thì bạn đợi anh Hai Lúa Miền Tây ghé ngang có thể sẽ giúp bạn . chứ tôi không làm được
 
Upvote 0
ngay ở cái file này bạn mở lên Clear vùng A1:BB5 -> save -> tắt file -> chạy code xem còn ghi lên A1 nữa không ?


tôi không có nhiều kiến thức như anh Hai Lúa Miền Tây . nhưng mà tôi không tin là code này ghi được dữ liệu khi máy khác đã mở file B.xls từ trước . ADO ghi dữ liệu chỉ khi file đang đóng thôi . bạn muốn có code ghi được dữ liệu khi người khác đang mở file thì bạn đợi anh Hai Lúa Miền Tây ghé ngang có thể sẽ giúp bạn . chứ tôi không làm được
Hoàn toàn có thể nhập liệu sang file đang mở đó bạn.

Mã:
Sub NhapLieu()
    Dim Cn As Object, rst As Object
    Dim strData As String
    strPath = ThisWorkbook.Path
    Set Cn = CreateObject("ADODB.Connection")
    Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & strPath & _
            "\A.xls;Extended Properties=""Excel 8.0"";"
    Set rst = Cn.Execute("Insert into [Sheet1$] (Stt,Ten) select stt,ten from [" & strPath & "\B.xls].[Sheet1$]")
    
End Sub
Code trên tôi ghi dữ liệu từ file B.xls sang file A.xls bình thường, cho dù file A.xls có đang mở hay đóng.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
ngay ở cái file này bạn mở lên Clear vùng A1:BB5 -> save -> tắt file -> chạy code xem còn ghi lên A1 nữa không ?

Mình đã clear r nhưng vẫn bị tình tranh ghi lên ô A1. Lạ thật




tôi không có nhiều kiến thức như anh Hai Lúa Miền Tây . nhưng mà tôi không tin là code này ghi được dữ liệu khi máy khác đã mở file B.xls từ trước . ADO ghi dữ liệu chỉ khi file đang đóng thôi . bạn muốn có code ghi được dữ liệu khi người khác đang mở file thì bạn đợi anh Hai Lúa Miền Tây ghé ngang có thể sẽ giúp bạn . chứ tôi không làm được

Bạn thử mở file B lên truoc và thao tác. rồi sau đấy mở file A lên ghi dữ liệu sang file B vẫn được. Lưu file như bình thường không có lỗi gì
 
Upvote 0
Web KT

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

Back
Top Bottom