Vô hiệu hóa chức năng Save As...

Liên hệ QC
Có thể nói rõ hơn mục đích của bạn không? Và bạn vận dụng nó khi nào? Lúc nào cũng chạy hay khi thoát File và không save?

Thôi, dù với mục đích gì, bạn chép code này vào sẽ không cho Save với bất cứ lúc nào, hình thức nào. (Làm việc mà không Save nghĩ cũng lạ nhỉ)

PHP:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
If SaveAsUI Then Cancel = True
End Sub

Ồ, chèn cái này vào workbook rồi thì save lại không được, vậy thì sao mà lưu lại được? Có cách nào giải quyết không ạ?
 
Ồ, chèn cái này vào workbook rồi thì save lại không được, vậy thì sao mà lưu lại được? Có cách nào giải quyết không ạ?

Chẳng phải bạn muốn thế sao? Bạn nói: "Nhờ thêm dòng lệnh không cho save lại luôn". Do đó chỉ cần 1 dòng lệnh Cancel = True.
Bây giờ bạn phải nói rõ hơn: khi nào cho save và khi nào không cho save, khi nào cho save as và khi nào không.
 
Chẳng phải bạn muốn thế sao? Bạn nói: "Nhờ thêm dòng lệnh không cho save lại luôn". Do đó chỉ cần 1 dòng lệnh Cancel = True.
Bây giờ bạn phải nói rõ hơn: khi nào cho save và khi nào không cho save, khi nào cho save as và khi nào không.

Khi mình chèn dòng lệnh

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel =
True
If SaveAsUI Then Cancel =
True
End Sub


Sau đó cho save lại để mình còn có thể lưu lại được chứ.

Sau khi lưu lại rồi thì không cho save lại nữa.

Chứ sau khi thêm vào lệnh mà không giữ lại được thì thêm vào làm gì???
 
Khi mình chèn dòng lệnh

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel =
True
If SaveAsUI Then Cancel =
True
End Sub


Sau đó cho save lại để mình còn có thể lưu lại được chứ.

Sau khi lưu lại rồi thì không cho save lại nữa.

Chứ sau khi thêm vào lệnh mà không giữ lại được thì thêm vào làm gì???
Bạn chọn Tools\Macro\Security, chọn mức High hoặc Very high. Sau đó, khởi động lại Excel, nhập đoạn code trên vào và lưu lại. Sau đó lại chọn lại Security mức Medium hoặc Low là được.
Lưu ý là người khác cũng có thể làm được như vậy đấy nhé, có nghĩa là việc vô hiệu hóa chức năng Save hoặc Save as chỉ là tương đối thôi.
 
Khi mình chèn dòng lệnh
Sau đó cho save lại để mình còn có thể lưu lại được chứ.
Sau khi lưu lại rồi thì không cho save lại nữa.
Bạn nhấn nút design trên thanh công cụ control toolbox để vào design mode, lúc đó có thể Save. Sau đó nhấn 1 cái nữa, thoát khỏi design mode thì không cho save
 
Có thể nói rõ hơn mục đích của bạn không? Và bạn vận dụng nó khi nào? Lúc nào cũng chạy hay khi thoát File và không save?

Thôi, dù với mục đích gì, bạn chép code này vào sẽ không cho Save với bất cứ lúc nào, hình thức nào. (Làm việc mà không Save nghĩ cũng lạ nhỉ)

PHP:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
If SaveAsUI Then Cancel = True
End Sub

Bạn cho mình hỏi thêm cũng trường hợp này nhưng mình muốn khi mình nhấn nút lệnh Save (tự tạo) trên Sheet1 thì vẫn cho lưu thì làm thế nào?
 
Add-in Disabled 'Save As'

Chào các Thầy/Cô,
Vì tính chất công việc, nên tôi cần hạn chế user Save As một số Workbooks đã định sẵn (các workbook này không chứa code), nên tôi suy nghĩ đến việc sử dụng Add-in để vô hiệu hóa Save As khi người dùng chọn Save As ở các workbook đã định sẵn.

Tôi đã thử đặt code trong event Workbook_BeforeSave và save lại thành add-in. Nhưng không hoạt động được.

Rất mong nhận được sự giúp đỡ của các Thầy/Cô trong GPE.

Xin chân thành cảm ơn!
 
Chào các Thầy/Cô,
Vì tính chất công việc, nên tôi cần hạn chế user Save As một số Workbooks đã định sẵn (các workbook này không chứa code), nên tôi suy nghĩ đến việc sử dụng Add-in để vô hiệu hóa Save As khi người dùng chọn Save As ở các workbook đã định sẵn.

Tôi đã thử đặt code trong event Workbook_BeforeSave và save lại thành add-in. Nhưng không hoạt động được.

Rất mong nhận được sự giúp đỡ của các Thầy/Cô trong GPE.

Xin chân thành cảm ơn!
Không cho save as thì người ta có thể copy file đó ở windows thì coi như phí công vô ích.
 
Không cho save as thì người ta có thể copy file đó ở windows thì coi như phí công vô ích.

Chưa hẳn đã vô ích anh ạ.
Em thì không muốn họ Save aS về định dạng của 2003 và 2007 với đuôi xlsx chỉ để lưu ở Đuôi xlsm thôi, họ lưu lại với đuôi khác code vba của em bị mất toi
Còn việc họ Copy ở Win em cho File chứ không dữ
 
Chưa hẳn đã vô ích anh ạ.
Em thì không muốn họ Save aS về định dạng của 2003 và 2007 với đuôi xlsx chỉ để lưu ở Đuôi xlsm thôi, họ lưu lại với đuôi khác code vba của em bị mất toi
Còn việc họ Copy ở Win em cho File chứ không dữ
Vậy cái add-ins của bạn nó như thế nào vậy? gửi lên xem thử nhé.
 
Chào các Thầy/Cô,
Vì tính chất công việc, nên tôi cần hạn chế user Save As một số Workbooks đã định sẵn (các workbook này không chứa code), nên tôi suy nghĩ đến việc sử dụng Add-in để vô hiệu hóa Save As khi người dùng chọn Save As ở các workbook đã định sẵn.

Tôi đã thử đặt code trong event Workbook_BeforeSave và save lại thành add-in. Nhưng không hoạt động được.

Rất mong nhận được sự giúp đỡ của các Thầy/Cô trong GPE.

Xin chân thành cảm ơn!

Không biết bạn đang dùng code gì nhưng điều chắc chắn rằng: Code này chỉ có thể chạy trong chính file của bạn nhưng sẽ không chạy khi lưu thành Add-In
Muốn dạng code này có thể chạy như 1 Add-In thì phải dùng Class
Đại khái cách làm như sau:
1> Chèn 1 Class Module
Trong cửa sổ VBA, chèn 1 Class Module, đặt tên cho nó là clsSaveEvent
Code trong Class:
Mã:
Public WithEvents MyApp As Application
Private Sub MyApp_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
  If SaveAsUI Then
    Cancel = True
    MsgBox "SaveAs Feature is Disabled!"
  End If
End Sub
2> Code trong Thisworkbook:
Mã:
Dim AppEventClass As New clsSaveEvent
Private Sub Workbook_Open()
  Set AppEventClass.MyApp = Application
End Sub
Lưu file thành Add-In với tên tùy ý... Gọi Add-In này và thí nghiệm mở file nào đó, xong SaveAs xem nó nói gì
 
Disable Save!

Xin gửi các bạn phiên bản 2 của DisableSavePro.

Toàn bộ mã nguồn như sau:

Module "modTest"
Mã:
Option Explicit
Dim DisableSave As clsDisableSave

Sub CreateDisableSave()
    Set DisableSave = New clsDisableSave
    DisableSave.Create Application
    DisableSave.TruePassword = "TuanVNUNI"
End Sub

Sub DestroyDisableSave()
    Set DisableSave = Nothing
End Sub

Class Module "clsDisableSave"
Mã:
Option Explicit
Private WithEvents fExcelApp As Application
Private fInputPassword As String, fTruePassword As String

Sub Create(ByVal ExcelApplication As Application)
    If Not fExcelApp Is Nothing Then
        Destroy
    End If
    Set fExcelApp = ExcelApplication
    If fExcelApp.ActiveWorkbook.ReadOnly Then
        'fExcelApp.ActiveWorkbook.ReadOnly = False
    End If
    MsgBox "All workbooks are locked!", vbExclamation
End Sub
Sub Destroy()
    Set fExcelApp = Nothing
End Sub

Private Sub fExcelApp_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = Not (fTruePassword = fInputPassword)
    SaveAsUI = Not Cancel
    If Cancel Then
        If MsgBox("The Save (As...) function is disable." & Chr(13) & _
                "Do you want to input password?", vbQuestion + vbYesNo, Wb.Name) = vbYes Then
          
            ShowInputPassword
            Cancel = Not (fTruePassword = fInputPassword)
            SaveAsUI = Not Cancel
          
        End If
    End If
End Sub

Private Sub Class_Initialize()
    'Do...
End Sub

Private Sub Class_Terminate()
    Destroy
End Sub

Property Get TruePassword() As String
    TruePassword = fTruePassword
End Property
Property Let TruePassword(ByVal Value As String)
    fTruePassword = Value
End Property

Property Get InputPassword() As String
    InputPassword = fInputPassword
End Property
Property Let InputPassword(ByVal Value As String)
    fInputPassword = Value
End Property

Sub ShowInputPassword()
    fInputPassword = fExcelApp.InputBox("Your password:")
End Sub

Các bạn có thể tham khảo file gửi kèm.

Theo gợi ý của bác Tuân,em thêm vào vài chú Macro. Cũng tạm ổn, trong mạng Lan nếu xem ở chế độ "Read only" file sẽ đóng khi save hoặc close, "save as" cũng tiêu luôn.
Các bác xem và giúp để em hoàn thiện.

Tuyệt vời nữa nếu khởi động file này thì Macro Security luôn chọn Low (em đã tìm trên diễn đàn rồi nhưng ko thấy như ý!)
anh ơi cho hỏi có cách nào đặt mật khẩu cho nó không?
 
Web KT
Back
Top Bottom