Cách không cho save as

Liên hệ QC

maiban1986

Thành viên thường trực
Tham gia
28/2/13
Bài viết
229
Được thích
29
Xin hỏi các anh chị có cách nào không cho file excel save as không. xin chỉ dùm. xin cám ơn cả nhà
 
Chắc là thế này: Nếu tập tin đang là XLSX thì save thành XLSM -> Alt + F11 -> đúp chuột vào ThisWorkbook -> dán code
Mã:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True
End Sub

-> Save

Tất nhiên phải khóa VBA lại. Tất nhiên khóa rồi nhưng nhiều người vẫn biết cách mở. Vân vân và vân vân.
 
Lần chỉnh sửa cuối:
Dùng CustomUI viết 1 đoạn mã cho file, khóa chức năng save as lại là được.
PHP:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<!-- Thêm the? mo´i va`o Ribbon -->
<commands>
    <command idMso="FileSaveAs" enabled="false"/>
    <command idMso="TabShare" enabled="false"/>
    <command idMso="TabInfo" enabled="false"/>
</commands>
</customUI>
 
Dùng CustomUI viết 1 đoạn mã cho file, khóa chức năng save as lại là được.
PHP:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<!-- Thêm the? mo´i va`o Ribbon -->
<commands>
    <command idMso="FileSaveAs" enabled="false"/>
    <command idMso="TabShare" enabled="false"/>
    <command idMso="TabInfo" enabled="false"/>
</commands>
</customUI>
F12 là được mà
 
chạy lệnh Application.EnableEvents=False, sau đó thoải mái save as.
Nói chung những kiểu này chỉ chống người không thạo VBA thôi. Vì nhiều người còn không biết là tồn tại cái gọi là EnableEvents, ScreenUpdating chứ chưa cần nói đến chuyện dùng chúng. Muốn chống "cao nhân", "pro" thì chỉ còn nước tự viết hoặc dùng phần mềm của bên thứ ba thôi.
 
chạy lệnh Application.EnableEvents=False, sau đó thoải mái save as.
-----------------

Chắc là bác truongvu317 chỉ nói về trường hợp của bác batman1 đề xuất nên mới set về false được.

Nếu chỉ có một trường hợp này thì có thể không cho set về False.

Tạo Module với Code:
PHP:
Private Sub Auto_Open()
  Call OnEvents
End Sub

Sub OnEvents()
  Application.EnableEvents = True
  Application.OnTime VBA.Now + VBA.TimeSerial(0, 0, 1), "'" & ThisWorkbook.Name & "'!OnEvents"
End Sub

Nhưng vẫn còn quá nhiều cách để SaveAs, tuy nhiên đối với bạn này thì đã đủ rồi, khóa với những người "trong nhà" thôi.

Nếu người "trong nhà" đã cho VBA hoạt động thì xem như người này không thể làm gì hơn rồi.
 
Lần chỉnh sửa cuối:
-----------------

Chắc là bác truongvu317 chỉ nói về trường hợp của bác batman1 đề xuất nên mới set về false được.

Nếu chỉ có một trường hợp này thì có thể không cho set về False.

Tạo Module với Code:
PHP:
Private Sub Auto_Open()
  Call OnEvents
End Sub

Sub OnEvents()
  Application.EnableEvents = True
  Application.OnTime VBA.Now + VBA.TimeSerial(0, 0, 1), "'" & ThisWorkbook.Name & "'!OnEvents"
End Sub

Nhưng vẫn còn quá nhiều cách để SaveAs, tuy nhiên đối với bạn này thì đã đủ rồi, khóa với những người "trong nhà" thôi.

Nếu người "trong nhà" đã cho VBA hoạt động thì xem như người này không thể làm gì hơn rồi.
Không hẳn như thế.

Giả sử tập tin cấm Save As là hichic.xlsm

Mở Excel -> tập tin mới -> thêm code
Mã:
Sub he()
    Application.EnableEvents = False
    Workbooks("hichic.xlsm").SaveAs "c:\blala.xlsm"
    Application.EnableEvents = True
End Sub
-> Developer -> Macro Security -> Disable all macros without notification -> OK -> mở hichic.xlsm -> chạy Sub he -> sẽ có c:\blala.xlsm
------------
Thực ra cái code của tôi nó cấm cả Save chứ không chỉ Save As :D
 
Hình như quý vị quên rằng những loại "cấm đoán" này cần phải thêm "cấm lên GPE"
Nếu không có cái điều kiện kia. Người ta chỉ việc đưa lên "sao file của em..." là xong hết. :p:p:p
 
Hình như quý vị quên rằng những loại "cấm đoán" này cần phải thêm "cấm lên GPE"
Haizzz, Bài toán vô nghiệm á bác, sài nghiệm phức thui bác.
Bài đã được tự động gộp:

Hình như lockxls chỉ khoá save còn save as vẫn được hiiii
nó save as thành một file .exe thì có coi là thất thủ hơm.
 
Hình như quý vị quên rằng những loại "cấm đoán" này cần phải thêm "cấm lên GPE"
Nếu không có cái điều kiện kia. Người ta chỉ việc đưa lên "sao file của em..." là xong hết. :p:p:p
Và "cấm bà chị, ông anh, con em, thằng em, bạn thân, bạn cùng phòng ... lên GPE" :D
 
Chắc là thế này: Nếu tập tin đang là XLSX thì save thành XLSM -> Alt + F11 -> đúp chuột vào ThisWorkbook -> dán code
Mã:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True
End Sub

-> Save

Tất nhiên phải khóa VBA lại. Tất nhiên khóa rồi nhưng nhiều người vẫn biết cách mở. Vân vân và vân vân.
Mình chạy thử xong vẫn Save as bình thường. Xin bạn chỉ lại giúp
 
Web KT
Back
Top Bottom