Xin code cho ClickButton trên Userform để Thoát và Lưu File

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Tuhai2606

Thành viên mới
Tham gia
13/2/23
Bài viết
29
Được thích
2
Chào mọi người. hiện tại mình đang sử dụng code
Private Sub txtThoat_Click()
Unload Me
Workbooks("OT_LineLD.xlsm").Save
If Workbooks.Count = 1 Then Application.Quit
ThisWorkbook.Close (True)
End Sub
Để tắt Userform nhập liệu và tự động lưu và thoát file Excel nhưng mình có 1 vấn đề là phải có tên File kèm theo Code
(Ví Dụ :"OT_LineLD.xlsm") thì mới hoạt động được, nhưng mình có hơn 1 trăm file với tên khác nhau nên việc chỉnh Code từng File khá mất thời gian. Mọi người có cách nào để mình có thể sử dụng 1 dòng Code cho tất cả các File không ạ. cảm ơn mọi người
111.PNG
 
Vấn đề là khi mở workbook nào đó để làm việc thì phải gán nó vào 1 biến để khi đóng, lưu thì dùng đến nó chứ không chỉ cụ thể thì làm sao đóng, lưu nó được.
 
Cứ vào GPE là thấy hàng khủng. Không cong thức khủng (nhìn đau cả đầu) thì cũng dữ liệu khủng (hằng trăm ngàn dòng), không dữ liệu khủng thì cũng hệ thống khủng (làm việc một lúc cả trăm files).

Gán thêm cho Form một cái textBox ẩn, mặc định Visible = False
Trong sự kiện load form, ghi tên file cần save vào đấy.
Trước dòng Unload Me, lấy cái tên file ấy ra.
 
Vấn đề là khi mở workbook nào đó để làm việc thì phải gán nó vào 1 biến để khi đóng, lưu thì dùng đến nó chứ không chỉ cụ thể thì làm sao đóng, lưu nó được.
dạ anh. tại em cũng mới học nên có nhiều cái cần phải tham khảo để học thêm kinh nghiệm. đăng vậy chứ nếu mà không có cách nào thì củng phải tự làm thủ công cho xong thôi ạ
Bài đã được tự động gộp:

Cứ vào GPE là thấy hàng khủng. Không cong thức khủng (nhìn đau cả đầu) thì cũng dữ liệu khủng (hằng trăm ngàn dòng), không dữ liệu khủng thì cũng hệ thống khủng (làm việc một lúc cả trăm files).

Gán thêm cho Form một cái textBox ẩn, mặc định Visible = False
Trong sự kiện load form, ghi tên file cần save vào đấy.
Trước dòng Unload Me, lấy cái tên file ấy ra.
Cứ vào GPE là thấy hàng khủng. Không cong thức khủng (nhìn đau cả đầu) thì cũng dữ liệu khủng (hằng trăm ngàn dòng), không dữ liệu khủng thì cũng hệ thống khủng (làm việc một lúc cả trăm files).

Gán thêm cho Form một cái textBox ẩn, mặc định Visible = False
Trong sự kiện load form, ghi tên file cần save vào đấy.
Trước dòng Unload Me, lấy cái tên file ấy ra.
Như vậy là vẫn phải ghi tên file cho từng file rồi anh. tại em đang cần là 1 file cho dù có đổi tên hay tạo mới thì cũng ko cần phải chỉnh lại code ấy ạ
 
Chào mọi người. hiện tại mình đang sử dụng code
Private Sub txtThoat_Click()
Unload Me
Workbooks("OT_LineLD.xlsm").Save
If Workbooks.Count = 1 Then Application.Quit
ThisWorkbook.Close (True)
End Sub
Để tắt Userform nhập liệu và tự động lưu và thoát file Excel nhưng mình có 1 vấn đề là phải có tên File kèm theo Code
(Ví Dụ :"OT_LineLD.xlsm") thì mới hoạt động được, nhưng mình có hơn 1 trăm file với tên khác nhau nên việc chỉnh Code từng File khá mất thời gian. Mọi người có cách nào để mình có thể sử dụng 1 dòng Code cho tất cả các File không ạ. cảm ơn mọi người
View attachment 292683

Chưa hiểu lắm cái ngữ cảnh mà bạn muốn thực hiện yêu cầu này.
Ví dụ: Bạn mở nhiều Workbook (WB) lên làm việc, và đang thao tác trên một Workbook khác và muốn đóng toàn bộ WB đang mở đó trước khi đóng cái WB hiện hành.

Mã:
Dim Wb As WorkBook
Dim currentWB As String

currentWB = ThisWorkbook.Name
For Each wb In Workbooks
    If wb.Name <> currentwb Then  'hoac If Not (wb Is Application.ActiveWorkbook) Then
        wb.Close SaveChanges:=True
    End If
Next wb
 
Câu này chưa thể trả lời tuyệt đối được vì câu hỏi chưa rõ ràng.
Code này là code trên file xlsm hay code trên file xlam, lệnh đóng file sẽ khác nếu đóng chính cái file chứa code hay cái file khác hay là add-ins để đóng file bất kỳ. Phải mô rả rõ trường hợp nào mới trả lời được.
 
Chưa hiểu lắm cái ngữ cảnh mà bạn muốn thực hiện yêu cầu này.
Ví dụ: Bạn mở nhiều Workbook (WB) lên làm việc, và đang thao tác trên một Workbook khác và muốn đóng toàn bộ WB đang mở đó trước khi đóng cái WB hiện hành.

Mã:
Dim Wb As WorkBook
Dim currentWB As String

currentWB = ThisWorkbook.Name
For Each wb In Workbooks
    If wb.Name <> currentwb Then  'hoac If Not (wb Is Application.ActiveWorkbook) Then
        wb.Close SaveChanges:=True
    End If
Next wb
dạ hiện có hơn 100file cho hơn 100 máy tính. mỗi máy chỉ dùng 1 file cố định và mỗi lần chỉ mở 1 file đấy thôi ạ. tại mỗi lần có thêm nhân viên và thêm máy tính thì phải chỉnh lại code cho máy đó. giờ Sếp yêu cầu đổi tên File theo ý Sếp thì em phải ngồi đổi Code cả hơn trăm file
 
dạ hiện có hơn 100file cho hơn 100 máy tính. mỗi máy chỉ dùng 1 file cố định và mỗi lần chỉ mở 1 file đấy thôi ạ. tại mỗi lần có thêm nhân viên và thêm máy tính thì phải chỉnh lại code cho máy đó. giờ Sếp yêu cầu đổi tên File theo ý Sếp thì em phải ngồi đổi Code cả hơn trăm file
Nếu chỉ đóng mỗi cái file đang chạy thì dùng:

Mã:
ThisWorkbook.Close SaveChanges:=True
 
dạ hiện có hơn 100file cho hơn 100 máy tính. mỗi máy chỉ dùng 1 file cố định và mỗi lần chỉ mở 1 file đấy thôi ạ. tại mỗi lần có thêm nhân viên và thêm máy tính thì phải chỉnh lại code cho máy đó. giờ Sếp yêu cầu đổi tên File theo ý Sếp thì em phải ngồi đổi Code cả hơn trăm file.
Đổi tên file thì phải gõ vào thôi, 100 files thì gõ 100 tên.
Chứ chẳng lẽ Excel nó đi guốc trong bụng mình và biết mình muốn đổi file A thành B à?
 
Yên tâm giờ mở chục file sẽ đóng không mỏi tay.
Mã:
Option Explicit

Sub ExitSave()
    Dim FileExcel As Workbook
    Application.EnableEvents = False
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    For Each FileExcel In Workbooks
        If FileExcel.Name <> ThisWorkbook.Name Then
            FileExcel.Close SaveChanges:=True
        End If
    Next
    ActiveWorkbook.Save
    Application.EnableEvents = True
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Application.Quit
End Sub
 
Thử thêm câu lệnh Application.Quit
Yên tâm giờ mở chục file sẽ đóng không mỏi tay.
Mã:
Option Explicit

Sub ExitSave()
    Dim FileExcel As Workbook
    Application.EnableEvents = False
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    For Each FileExcel In Workbooks
        If FileExcel.Name <> ThisWorkbook.Name Then
            FileExcel.Close SaveChanges:=True
        End If
    Next
    ActiveWorkbook.Save
    Application.EnableEvents = True
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Application.Quit
End Sub
cảm ơn 2 anh rất rất nhiều. Đúng thứ em cần rồi ạ
 
Web KT

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

Back
Top Bottom