Xin hỏi cách chèn code vào VBA để xóa file khi nhập sai pass n lần? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

taieuro2

Thành viên mới
Tham gia
29/2/12
Bài viết
20
Được thích
1
Mình tìm được trên 1 website có hướng dẫn cách xóa file khi người khác cố tình mở file có pass mà lại nhập sai pass.
Nhưng theo kiến thức nông cạn thì mình thấy hình như code dưới đây chỉ nhập sai 1 lần là nó xóa mất file luôn!
Mã:
[COLOR=#FFFFFF][FONT=Arial]Private Sub Workbook_Open()[/FONT][/COLOR]
[COLOR=#000000][FONT=Arial]Dim strPwd As String[/FONT]
[FONT=Arial]strPwd = Application.InputBox("Enter password")[/FONT]
[FONT=Arial]'Enter your password here[/FONT]
[FONT=Arial]If strPwd <> "Mahesh123" Then[/FONT]
[FONT=Arial]Application.DisplayAlerts = False[/FONT]
[FONT=Arial]ThisWorkbook.ChangeFileAccess xlReadOnly[/FONT]
[FONT=Arial]Kill ThisWorkbook.FullName[/FONT]
[FONT=Arial]ThisWorkbook.Close False[/FONT]
[FONT=Arial]End If[/FONT][/COLOR]
Mình mong các Pro chỉ giúp cách làm sao thay đổi được số lần nhập sai pass mới cho phép xóa file!
Và cách chèn code vào file để khi mở là nó hỏi pass, nhập sai 3 lần mới xóa!
Và khi xóa thì nó xóa vào đâu, có cách phục hồi được không? (nếu xóa vào recycle bin thì mình biết cách lấy lại rồi --=0)
Xin chân thành cảm ơn các Pro!​
 
Theo như lời anh em tò mò ko biết file này có thể mở được ko.
https://www.mediafire.com/?dljhef89sdlfy96
Tại vì ở công ty có 1 anh cho em 1 file và thách thức tất cả mọi người mà mở (View Code) được thì anh ta sẻ ko khóa nữa. em thì bó tay rồi.
Anh có cách nào mở ko anh ^^ Thanks

Không biết có đúng như bạn nói hay không???
Bây giờ bạn chỉ cần trả lời với anh ta thế này: Trong file của anh ta chẳng có 1 dòng code nào cả thì anh ta sẽ biết bạn đã view code rồi đấy
(chỉ là Protect Shared Workbook ---> Trò vặt)
 
Upvote 0
anh có thể gửi lại file đã mở ra được ko anh? hay chỉ em cách mở, để anh đó thấy có thể tin được

Không biết tôi có đang tiếp tay cho ý đồ nào đó hay không? (nếu có thì tôi thật hối hận. Hy vọng đúng như những gì bạn đã nói)
Bạn xem file và biết đã mở là được rồi
 

File đính kèm

Upvote 0
Không biết tôi có đang tiếp tay cho ý đồ nào đó hay không? (nếu có thì tôi thật hối hận. Hy vọng đúng như những gì bạn đã nói)
Bạn xem file và biết đã mở là được rồi
Với danh dự của mình, em bảo đảm ko có ý đồ nào xấu cả, chỉ vì lời thách thức đó thôi. nên anh đừng có áy náy gì hết đó. Thanks anh
 
Lần chỉnh sửa cuối:
Upvote 0
Dám cá với bạn rằng trong Excel không có cách nào bảo mật được đâu
Dù bạn có làm bất cứ cái gì (kể cả chuyển file Excel thành file EXE) người ta vẫn phá "banh ta long" file của bạn 1 cách dễ dàng
Anh "ndu96081631" cho em hỏi thêm ý này: nếu người khác khóa bằng phần mềm "lockxls" thì mình có thể mở file excel lên được không anh? Xin anh cho ý kiến....chân thành cảm ơn Anh rất nhiều!!!!
 
Upvote 0
Anh "ndu96081631" cho em hỏi thêm ý này: nếu người khác khóa bằng phần mềm "lockxls" thì mình có thể mở file excel lên được không anh? Xin anh cho ý kiến....chân thành cảm ơn Anh rất nhiều!!!!

Tôi không biết vì chưa thử lần nào.
Tuy nhiên, có thể nói chắc 100% rằng dù người ta có Unlock được thì cũng sẽ không giúp bạn trong phạm vi diễn đàn này <--- Nội quy diễn đàn không cho phép
 
Upvote 0
Bạn làm thế này

Tạo 1 module rồi chép hết đoạn code dưới đây vào
PHP:
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
sFrom As String
sTo As String
fFlags As Integer
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type

Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" _
(ByRef lpFileOp As SHFILEOPSTRUCT) As Long

Private Const FO_DELETE = &H3
Private Const FOF_SILENT = &H4
Private Const FOF_NOCONFIRMATION = &H10
Private Const FOF_ALLOWUNDO = &H40

Sub DeleteFileUsingAPI(sFile As String)

Dim oFilAPI As SHFILEOPSTRUCT
Dim lReturn As Long
' File that needs to be deleted

With oFilAPI
.wFunc = FO_DELETE
.sFrom = sFile
.sTo = vbNullChar
.fFlags = FOF_SILENT + FOF_NOCONFIRMATION + FOF_ALLOWUNDO
End With

' Use WinAPI User Defined Function
lReturn = SHFileOperation(oFilAPI)

Err_Delete:
MsgBox ("Sai Password")
End Sub

Sau đó vào ThisWorkbook dùng đoạn code này
PHP:
Private Sub Workbook_Open()
    Dim strPwd As String, n As Byte
    Do
        n = n + 1
        strPwd = Application.InputBox("Enter password:")
    Loop Until strPwd = "Mahesh123" Or n = 3
    If strPwd <> "Mahesh123" Then
        Application.DisplayAlerts = False
        ThisWorkbook.ChangeFileAccess xlReadOnly
        DeleteFileUsingAPI ThisWorkbook.FullName
        ThisWorkbook.Close False
    End If
End Sub
Hàm API không xử lý được với đường dẫn tiếng việt và tên file tiếng việt, chắc có lẽ cái vụ xóa File này thì phải chơi với Filesystemobject
 
Upvote 0
Web KT

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

Back
Top Bottom