[Hỏi] Lấy giá trị Textbox trong userform cho vào file excel bằng ADO

Liên hệ QC

hsm.ksxd

Thành viên chính thức
Tham gia
24/8/17
Bài viết
77
Được thích
5
Giới tính
Nam
Các bác cho em hỏi có cách nào lấy giá trị Textbox trong userform cho vào file excel đang đóng bằng ADO không ạ? Khi nhấn vào cmd Thêm Vật tư thì các giá trị trong các Textbox MSVT, TVT, DVT, TLG, HSBH được chèn vào các cột tương ứng của sheet tbTuDienVatTu trong file "TuDienVatTu.xlsx" .Nếu mở file "TuDienVatTu.xlsx" rồi chèn dữ liệu vào thì em đã biết cách làm. Em muốn xem có cách nào không cần mở file mà vẫn chèn dữ liệu vào được không ạ?
 

File đính kèm

  • AddVT.rar
    142.8 KB · Đọc: 33
Đây gọi là về tới cổng nhà mình rồi, gọi taxi ôm đi một vòng nữa mới chịu vào nhà.
 
Đây gọi là về tới cổng nhà mình rồi, gọi taxi ôm đi một vòng nữa mới chịu vào nhà.
Nếu file nguồn có nhiều dữ liệu và rất nặng thì mỗi lần mở file rất lâu. Mối lần Thêm VT lại mở file rồi đóng file thì rất mất thời gian. Ý em là nếu có cách nào thêm dữ liệu vào file đang đóng thì sẽ nhanh hơn ạ.
 
Nếu file nguồn có nhiều dữ liệu và rất nặng thì mỗi lần mở file rất lâu. Mối lần Thêm VT lại mở file rồi đóng file thì rất mất thời gian. Ý em là nếu có cách nào thêm dữ liệu vào file đang đóng thì sẽ nhanh hơn ạ.
. Vậy sao không làm form luôn trên file kia cho nhanh? Nếu cần backup dữ liệu thì viết một khúc code tạo file backup cho nhanh, nhẹ nhàng.
. Bạn có chắc chắn là ghi dữ liệu vào file đóng không? Vì gần đây có một người cứ nặng nặc đòi ghi vào file đóng, cả thớt đó trừ mình còn tất cả làm GHI vào file đóng NHƯNG chủ thớt gật như bổ củi - đúng rồi!!!
. Bạn tìm với từ khóa: "write data to closed workbook" là thấy nhiều bài..
 
. Vậy sao không làm form luôn trên file kia cho nhanh? Nếu cần backup dữ liệu thì viết một khúc code tạo file backup cho nhanh, nhẹ nhàng.
. Bạn có chắc chắn là ghi dữ liệu vào file đóng không? Vì gần đây có một người cứ nặng nặc đòi ghi vào file đóng, cả thớt đó trừ mình còn tất cả làm GHI vào file đóng NHƯNG chủ thớt gật như bổ củi - đúng rồi!!!
. Bạn tìm với từ khóa: "write data to closed workbook" là thấy nhiều bài..
File "TuDienVatTu.xlsx" là file dữ liệu nguồn, file "Add VT.xlsm" là file làm việc. Mình chỉ thao tác làm việc trên file "Add VT.xlsm" thôi ạ. Ghi dữ liệu từ file excel sang file excel đóng em cũng tìm hiểu rồi, nhưng ghi dữ liệu từ Textbox vào file đóng thì em không tìm thấy tài liệu nào. Đầu tiên em cũng nghĩ ghi dữ liệu từ Textbox vào 1 sheet phụ rồi dùng ADO ghi vào File "TuDienVatTu.xlsx". Nhưng em muốn tìm xem có cách nào ghi trực tiếp từ Textbox vào File "TuDienVatTu.xlsx" luôn không?
 
File "TuDienVatTu.xlsx" là file dữ liệu nguồn, file "Add VT.xlsm" là file làm việc. Mình chỉ thao tác làm việc trên file "Add VT.xlsm" thôi ạ. Ghi dữ liệu từ file excel sang file excel đóng em cũng tìm hiểu rồi,
Nếu bạn có nghiên cứu caí này rôi thì từ Text box nó cũng y chang vậy thôi
 
ẹc ẹc, lâu quá mới có người gọi lên bảng.
Bạn thử dùng code sau nhé.
Mã:
Private Sub cmdADD_Click()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\TuDienVatTu.xlsx;Extended Properties=Excel 12.0"
        .Execute ("Insert Into [tbTuDienVatTu$] (MSVT,TVT,DVT,TLG,HSBH) Values('" & txtMSVT.Text & "','" & txtTVT.Text & "','" & txtDVT.Text & "','" & txtTLG.Text & "','" & txtHSBH.Text & "')")
    End With
  
End Sub
 
Đây gọi là về tới cổng nhà mình rồi, gọi taxi ôm đi một vòng nữa mới chịu vào nhà.
Do ngừoi ta nghĩ rằng ADO là một đối tượng (gã đầy tớ) có thể giúp mình làm việc với một đối tượng khác (đi đưa thư tình cho bồ nhí) giùm cho mình.
Thực ra cách suy nghĩ ấy không hẳn là sai. Chỉ là vì nó làm việc sau lưng cho nên nếu có sơ xuất gì thì làm sao biết? Ví dụ tên đầy tớ đưa thư nhằm cho chị/em bồ nhí?

Vả lại, chuyện đổ dữ liệu từ form ra file qua đối tượng khác không được hiệu quả cho lắm. Cứ mỗi lượt nhập dữ liệu vào form, bấm [Ok] là nó lại mở kết nối, ghi vào và đóng kết nối !!!
 
nếu hàng ngày cứ lưu và lưu qua file khác như vậy làm 1 cái Database.accdb lưu cho nó sướng mà lấy lên cũng sướng ... tốc độ nhanh hơn rất nhiều so với Excel

Access Lưu hoài lưu mãi chưa tới 2G ... còn Excel lưu tới 1048576 là tịt :oops::p
 
nếu hàng ngày cứ lưu và lưu qua file khác như vậy làm 1 cái Database.accdb lưu cho nó sướng mà lấy lên cũng sướng ... tốc độ nhanh hơn rất nhiều so với Excel

Access Lưu hoài lưu mãi chưa tới 2G ... còn Excel lưu tới 1048576 là tịt :oops::p

Tùy cách thôi chứ anh. Excel có nhiều sheet cơ mà... Ta quy định 1 sheet lưu tới dòng bao nhiêu thôi... Còn lại lưu sang sheet khác... Đừng dại nhét hết vào 1 Sheet chi rồi khổ...:D:D:D
 
Tùy cách thôi chứ anh. Excel có nhiều sheet cơ mà... Ta quy định 1 sheet lưu tới dòng bao nhiêu thôi... Còn lại lưu sang sheet khác... Đừng dại nhét hết vào 1 Sheet chi rồi khổ...:D:D:D
Nếu phải rắc rối thế thì Access lại càng hợp lý hơn.
Theo như cách sử lý của thớt thì dùng Excel bởi vì nó sẽ là 1 cái file chủ để làm lookup table.
(Access làm lookup table cũng được, nhưng hơi khó gởi đi chỗ khác)
 
ẹc ẹc, lâu quá mới có người gọi lên bảng.
Bạn thử dùng code sau nhé.
Mã:
Private Sub cmdADD_Click()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\TuDienVatTu.xlsx;Extended Properties=Excel 12.0"
        .Execute ("Insert Into [tbTuDienVatTu$] (MSVT,TVT,DVT,TLG,HSBH) Values('" & txtMSVT.Text & "','" & txtTVT.Text & "','" & txtDVT.Text & "','" & txtTLG.Text & "','" & txtHSBH.Text & "')")
    End With
 
End Sub
Cảm ơn bác nhé
Nếu phải rắc rối thế thì Access lại càng hợp lý hơn.
Theo như cách sử lý của thớt thì dùng Excel bởi vì nó sẽ là 1 cái file chủ để làm lookup table.
(Access làm lookup table cũng được, nhưng hơi khó gởi đi chỗ khác)
Đúng ý em rồi bác ạ. Access làm lookup table cũng được hả bác. Em tìm trên google mà không thấy cách lookup dữ liệu từ Access sang excel
 
Web KT
Back
Top Bottom