Lấy dữ liệu từ 1 file đang đóng định sẵn

Liên hệ QC

tuan206791

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
29/4/08
Bài viết
95
Được thích
-2
Mọi người sửa giúp em đoạn code này không cần phải chọn file mà vẫn lấy được dữ liệu với ạ. Em cám ơn
 

File đính kèm

  • dang_mo.xlsm
    22 KB · Đọc: 11
  • dang_dong.xlsm
    13.5 KB · Đọc: 15
Tên mình gắn với mã cột căn cước công dân để không thể trùng được anh à
Nhờ anh viết cho em code tra cứu theo cột họ tên lấy ngược lại dữ liệu từ sheet1 đã lưu thông tin sang NhapLieu không anh (Mục đích cập nhật sửa thông tin) sau đó lại lưu đè lai sheet1
 
Upvote 0
Tên mình gắn với mã cột căn cước công dân để không thể trùng được anh à
Nhờ anh viết cho em code tra cứu theo cột họ tên lấy ngược lại dữ liệu từ sheet1 đã lưu thông tin sang NhapLieu không anh (Mục đích cập nhật sửa thông tin) sau đó lại lưu đè lai sheet1
Bạn xem bài này: Link
Trong file tôi có code cho việc Thêm, Xóa, Sửa dữ liệu rồi lưu xuống Sheet đó. Bạn ngâm cứu rồi tùy biến lại cho file của mình.

CleanShot 2022-07-14 at 17.46.24@2x.jpg
 
Upvote 0
Type vài kí tự trong textbox để tìm tên ngay trong sheet1.
Sửa trực tiếp trong cell cần sửa.
Control S lưu lại
 

File đính kèm

  • du lieu nhap hang ngay33.xlsm
    34.8 KB · Đọc: 14
Upvote 0
Dạ em cảm ơớin các anh. em m sửa lại file nhờ anh chị bổ sung code khi lưu nếu trùng thì lưu đè dữ liệu cũ luôn. em cảm ơn các anh
 

File đính kèm

  • TongHop.xlsm
    26 KB · Đọc: 6
Upvote 0
Dạ em cảm ơớin các anh. em m sửa lại file nhờ anh chị bổ sung code khi lưu nếu trùng thì lưu đè dữ liệu cũ luôn. em cảm ơn các anh
Thử xem, biết đâu đúng ý.
Nhấn nút Them mới===>Bản ghi cuối cùng của sh Nhập Liệu sẽ được ghi và sh Data, nếu là mã số CC mới ghi vào dòng cuối, nếu là mã đã có trong Sh Data ghi đè lên dòng đó.
Nhấn nút Save===> các bản ghi sẽ được ghi và Sh Data, nếu có mã CC trùng thì ghi đè.
Vẫn code cũ tôi chỉ sửa thêm chút ít. Nếu có mạo phạm xin được tác giả cảm thông.
 

File đính kèm

  • TongHop.xlsm
    30.3 KB · Đọc: 19
Upvote 0
Dạ Đúng ý rồi anh à có cách nào mà vẫn code đó có thể lưu vào một file excel đang đóng không anh. Vì nếu lưu vào sheet Data cũng nguy hiểm anh à vì khi cùng file đó nếu mất dữ liệu thì cũng sẽ mất hết anh à
 
Upvote 0
Dạ Đúng ý rồi anh à có cách nào mà vẫn code đó có thể lưu vào một file excel đang đóng không anh. Vì nếu lưu vào sheet Data cũng nguy hiểm anh à vì khi cùng file đó nếu mất dữ liệu thì cũng sẽ mất hết anh à
Hoàn toàn có thể được , code sẽ tìm đến file (mà bạn gọi là đang đóng ấy), mở ra (có hoặc không hiển thị lên màn hình), ghi dữ liệu vào, Save, close, và trở về file đang mở. quá trình ấy nếu có thêm các điều kiện khác ( ghi trùng, ghi đè, ghi theo 1 tiêu chí nào đó- ví dụ : mã CC có địa chỉ là Hoàng Mai- ghi vào Sheet HoangMai, Mã CC có địa chỉ là Quỳnh lưu ghi vào Sh QuynhLuu.....), hoặc xử lý thêm các yêu cầu khác (vi dụ ghi vào rồi , lấy cột gì đó (vừa mói ghi) +-*/ với Cột nào đó (dữ liệu cũ) để ghi vào cột mới) . nhưng yêu cầu Dữ liệu phải chuẩn Ví dụ Ngày tháng năm phải theo đúng chuẩn của excel,...).
Muốn Vẫn code đó vẫn ghi vào Sh Data ở một folder đang đóng nào đó thì phải sửa code thôi để cho code tìm đến folder đó đã chứ.Mà tại sao bạn lại muốn ghi vào 1 file khác?
 
Upvote 0
Chỉ cần khi file excel đang mở và nhập dữ liệu xong thì ghi vào excel đang đóng anh à. Điều kiện khi ghi dữ liệu là phải ghi dòng tiếp theo của excel đang đóng, nếu 1 chủ sử dụng có số căn cước trùng nhau thì tạo hộp thoại có ghi đè không vào thông tin chủ củ không. Hàng ngày em nhập dữ liệu liên nên sợ file nhập hỏng là mất hết a à. Excel nhập có bao cột thì ghi vào file đang đóng bấy nhiêu cột anh à. Xin nhờ anh viết giùm em với
Bài đã được tự động gộp:

Cách thức lưu giống như code a viết chỉ khác là lưu vào 1 file excel đang đóng anh à
 
Upvote 0
Dạ em chưa viết được anh à .em chỉ đọc và sửa code phù hợp với dữ liệu làm hàng ngày anh ạ. Mong anh cố gắng hoàn thiện code lưu vào sheet đang đóng như e trình bày trên à cho e với ạ em xin cảm ơn anh
 
Upvote 0
Dạ em chưa viết được anh à .em chỉ đọc và sửa code phù hợp với dữ liệu làm hàng ngày anh ạ. Mong anh cố gắng hoàn thiện code lưu vào sheet đang đóng như e trình bày trên à cho e với ạ em xin cảm ơn anh
Xem file. Đưa chuột vào cột G/Sh Nhaplieu và Enter===> xem điều gì diễn ra.
Nhập tên folder và tên file cần lưu dữ liệu vào ô I2 và J2.
Lưu ý đường dẫn của tôi có thể khác bạn.
 

File đính kèm

  • NhapLieu (2).xlsm
    31.9 KB · Đọc: 17
Upvote 0
Anh xem em với em đã đặt thông tin như anh mà không thấy cập nhật được sang sheet đang đóng anh à
 

File đính kèm

  • 1.jpg
    1.jpg
    48 KB · Đọc: 14
  • 2.jpg
    2.jpg
    117.1 KB · Đọc: 14
Upvote 0
Anh xem em với em đã đặt thông tin như anh mà không thấy cập nhật được sang sheet đang đóng anh à
Tôi đã nói trước rồi, đường dẫn của tôi có thể khác của bạn.
File Nhap Lieu (2) của tôi đặt ở "C:...Download. Folder HUONG cũng có địa chỉ là :"C: ....Download\HUONG"
Trong Folder HUONG chỉ có 1 file TongHop.xlsm.
Bạn mở modul 2/Sub SaveNew và nhấn F8. tìm đến dòng Path = ThisWorkbook.Path & "\" & Sh.[I2] để xem dòng đó cho ra path= gì? Tiếp tục f8 đến dòng
If FSO.FolderExists(Path) = True Then
Set Fold = FSO.GetFolder(Path)
For Each file In Fold.Files
If file.Name Like TenFile Then

và xem các dòng này là gì? từ đó cần làm gì thì tự bạn hiểu.
Bạn tạm thời vô hiệu 2 dòng lệnh sau:
Application.ScreenUpdating = False và dòng
WbMoi.Close SaveChanges:=True và chạy thử xem File TongHop.xlsm có được mở ra không? có được cập nhật không?
Phải làm gì tiếp theo , bạn thừa sức làm được.
 
Upvote 0
Chỉ cần khi file excel đang mở và nhập dữ liệu xong thì ghi vào excel đang đóng anh à. Điều kiện khi ghi dữ liệu là phải ghi dòng tiếp theo của excel đang đóng, nếu 1 chủ sử dụng có số căn cước trùng nhau thì tạo hộp thoại có ghi đè không vào thông tin chủ củ không. Hàng ngày em nhập dữ liệu liên nên sợ file nhập hỏng là mất hết a à. Excel nhập có bao cột thì ghi vào file đang đóng bấy nhiêu cột anh à. Xin nhờ anh viết giùm em với
Bài đã được tự động gộp:

Cách thức lưu giống như code a viết chỉ khác là lưu vào 1 file excel đang đóng anh à

Nói thực đây là giải thuật sao lưu dữ liệu song song mà bạn nghĩ ra chứ tôi chưa thấy phần mềm nào được viết như vậy cả.
- Nhập liệu là chỉ lưu xuống 1 cơ sở dữ liệu (CSDL) duy nhất, có thể là Excel sheet, Access table, SQL Server table...
- Việc sao lưu dự phòng sẽ dùng code khác, định kỳ sao lưu toàn bộ CSDL thành một file riêng và có đánh dấu ngày giờ lưu. Sau này có thể dựa vào mốc thời gian để phục hồi dữ liệu về hiện trạng ban đầu trước thời điểm xảy ra sự cố.
Giải thuật của bạn làm tốn tài nguyên nhập liệu cùng lúc đến 2 lần, mỗi khi Sửa/ Xóa cũng phải chạy 2 nơi mà mục đích giải thuật này không khác việc sao lưu định kỳ. Muốn an toàn thì sao lưu mỗi ngày mà loại dữ liệu của bạn có quan trọng đến mức phải sao lưu mỗi lần nhập liệu? Còn muốn hình thức nhập liệu xong nhưng muốn quay đầu về như cũ thì nên dùng các ngôn ngữ có hỗ trợ: Begin Transaction, Cancel transaction, Commit transaction (tương tự như bắt đầu chuyển tác, hủy chuyển tác, xác nhận chuyển tác)
 
Lần chỉnh sửa cuối:
Upvote 0
Quá ngon rồi anh à anh có thể bổ sung thay vì Đưa chuột vào cột G/Sh Nhaplieu mình làm 1. cái selcet chọn từng dòng như hình sau
2. Câu lệnh lưu toàn bộ các dòng nữa là quá tuyệt anh à
 

File đính kèm

  • select.jpg
    select.jpg
    13.7 KB · Đọc: 9
  • toan bo.jpg
    toan bo.jpg
    6.2 KB · Đọc: 9
Upvote 0
Quá ngon rồi anh à anh có thể bổ sung thay vì Đưa chuột vào cột G/Sh Nhaplieu mình làm 1. cái selcet chọn từng dòng như hình sau
2. Câu lệnh lưu toàn bộ các dòng nữa là quá tuyệt anh à
1. Làm như cũ nó phù hợp với việc nhập liệu hơn. Bạn nhập liệu cho 1 người từ cột A lần lượt các thông tin đến cột G, nhập xong bạn phải Enter xuống dòng để nhập người tiếp theo, lúc này code sẽ nhập các thông tin mà bạn vừa nhập vào CSDL để lưu rồi còn gì. Theo tôi nếu làm theo hình tức là làm cái inputbox để nhập ấy đâm rườm rà hơn và không cần thiết
2.Bạn dùng vòng lặp For i = 1 to Ubound(arr) với mảng Arr =Sheets("nhapLieu").range("A3:G"& dòng cuối).value
Xét Arr(i,1) trong Vùng (Rng)=Sheets("Data").range("A2:A"& dongcuoi) xem đã có chưa bằng 2 cách:
+1. Dùng Countif. k=Application.Countif(Rng,Arr(i,1)) nếu k=0 thì lấy mới, nếu >0 thì lấy trùng.
+2. Dùng phương thức Find; Set eRng= Rng.Find(Arr(i,1)), nếu eRng is nothing thì lấy mới, nếu không thì lấy trùng.
Mà cho hỏi nhỏ chút, bạn làm ở cơ quan nào vậy? Ở Nghệ An à? Chức vụ của bạn ở cơ quan đó là gì? Tài sao tôi lại hỏi thế vì tôi cũng ở Nghệ An, và tôi thấy vẫn thiếu thiếu cái gì đó ở bạn (đa phần người xứ Nghệ đều có cái này-họ không có phần thiêu thiếu đó- còn bạn thì khác)
 
Lần chỉnh sửa cuối:
Upvote 0
Hì. Dạ em ở Nghệ An anh à. Công việc em làm bên Thống kê anh à. hàng ngày phải nhập nhiều chủ quá anh à
Nếu làm được cái inputbox vẫn hay hơn anh à. vì trong quá trình nhập xong rồi có 1 ông sai thông tin hay sửa thông tin ta chọn thửa đó và cập nhật lại chủ đó anh à.
Thật sự Em chưa viết được code chỉ mong anh viết cho rồi em ứng dụng vào thực tế công việc anh à
 
Upvote 0
Qua em bận quá chưa kịp hoi anh hướng anh ở huyện mô nghệ an đó anh.
 
Upvote 0
Web KT

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

Back
Top Bottom