Hạn chế số ngày sử dụng của File

Liên hệ QC

phuyen89

Thành viên tích cực
Tham gia
20/11/08
Bài viết
870
Được thích
336
Nghề nghiệp
Student
Trong nhung lần copy file.Em thấy có File cho sử dụng bao nhiêu ngày thôi.Do vậy em tự hỏi phải dùng Code như thế nào mà lại hạn chế số ngày sử dụng của File như vây.Em chỉ nói đến 1 cái File bình thường thôi,chứ không phải là phần mềm
 
Bạn thử coi:
Mã:
Private Sub Workbook_Open()
Dim strPass As String
ng = Day(Date)
th = Month(Date)
nam = Year(Date)
If ng > 1 And th > 5 And nam >= 2008 Then
strPass = InputBox("Nhap mat khau: hoangtuan.net", "Your Password")
If strPass <> "hoangtuan.net" Then
        MsgBox "Mat khau khong chinh xac. File se duoc dong.", vbCritical
        ThisWorkbook.Close False
    End If      

End If
End Sub
Em rất cảm ơn Bác Nhưng có thể xem hộ em file đã copy code vào đc ko ạ em cho vào nhưng mở ra đang báo lỗi.
 

File đính kèm

  • filetn.xlsm
    16.9 KB · Đọc: 1
Upvote 0
Em rất cảm ơn Bác Nhưng có thể xem hộ em file đã copy code vào đc ko ạ em cho vào nhưng mở ra đang báo lỗi.
1713597638786.png

Option Explicit là một câu lệnh trong VBA (Visual Basic for Applications) và VBScript. Khi bạn sử dụng Option Explicit ở đầu một module, bạn buộc phải khai báo tất cả các biến mà bạn sử dụng trong module đó.

Nếu bạn không khai báo một biến và cố gắng sử dụng nó khi Option Explicit đang được sử dụng, VBA sẽ báo lỗi biên dịch và yêu cầu bạn khai báo biến.

Việc sử dụng Option Explicit giúp bạn tránh các lỗi do việc gõ sai tên biến hoặc sử dụng các biến chưa được khai báo. Điều này làm cho code của bạn dễ đọc và bảo dưỡng hơn, và giúp bạn phát hiện các lỗi một cách dễ dàng hơn.

Trong trường hợp của bạn thì các biến ng, th, nam chưa được khai báo. Có 2 cách làm:

1. Khai báo biến (nên làm cách này)
2. Xóa Option Explicit
Bài đã được tự động gộp:

Mã:
Option Explicit

Private Sub Workbook_Open()
Dim strPass As String
Dim ng As Integer, th As Integer, nam As Integer
ng = Day(Date)
th = Month(Date)
nam = Year(Date)
If ng > 1 And th > 5 And nam >= 2008 Then
strPass = InputBox("Nhap mat khau: hoangtuan.net", "Your Password")
If strPass <> "hoangtuan.net" Then
        MsgBox "Mat khau khong chinh xac. File se duoc dong.", vbCritical
        ThisWorkbook.Close False
    End If


End If
End Sub
 
Upvote 0
View attachment 300372

Option Explicit là một câu lệnh trong VBA (Visual Basic for Applications) và VBScript. Khi bạn sử dụng Option Explicit ở đầu một module, bạn buộc phải khai báo tất cả các biến mà bạn sử dụng trong module đó.

Nếu bạn không khai báo một biến và cố gắng sử dụng nó khi Option Explicit đang được sử dụng, VBA sẽ báo lỗi biên dịch và yêu cầu bạn khai báo biến.

Việc sử dụng Option Explicit giúp bạn tránh các lỗi do việc gõ sai tên biến hoặc sử dụng các biến chưa được khai báo. Điều này làm cho code của bạn dễ đọc và bảo dưỡng hơn, và giúp bạn phát hiện các lỗi một cách dễ dàng hơn.

Trong trường hợp của bạn thì các biến ng, th, nam chưa được khai báo. Có 2 cách làm:

1. Khai báo biến (nên làm cách này)
2. Xóa Option Explicit
Bài đã được tự động gộp:

Mã:
Option Explicit

Private Sub Workbook_Open()
Dim strPass As String
Dim ng As Integer, th As Integer, nam As Integer
ng = Day(Date)
th = Month(Date)
nam = Year(Date)
If ng > 1 And th > 5 And nam >= 2008 Then
strPass = InputBox("Nhap mat khau: hoangtuan.net", "Your Password")
If strPass <> "hoangtuan.net" Then
        MsgBox "Mat khau khong chinh xac. File se duoc dong.", vbCritical
        ThisWorkbook.Close False
    End If


End If
End Sub
Trước tiên em rất cảm ơn Bác vì đã nhiệt tình giúp em. Nhưng em đã sửa lại file theo cách 1 bác chỉ em nhưng không hiểu sao khi em vào lại nó lại không yêu cầu em nhập mật khẩu nhỉ vì hôm này là ngày 40-4-2024 điều kiện đều thỏa mãn lớn hơn ngày 1-5-2008 >>> thì nó phải thực hiện code đoạn sau bác viết bổ xung cho em chứ nhỉ >> em mở cái nó lại vào trong file luôn đc. :)
 

File đính kèm

  • filetn-dasuacode.xlsm
    17.1 KB · Đọc: 1
Upvote 0
Trước tiên em rất cảm ơn Bác vì đã nhiệt tình giúp em. Nhưng em đã sửa lại file theo cách 1 bác chỉ em nhưng không hiểu sao khi em vào lại nó lại không yêu cầu em nhập mật khẩu nhỉ vì hôm này là ngày 40-4-2024 điều kiện đều thỏa mãn lớn hơn ngày 1-5-2008 >>> thì nó phải thực hiện code đoạn sau bác viết bổ xung cho em chứ nhỉ >> em mở cái nó lại vào trong file luôn đc. :)
If ng > 1 And th > 5 And nam >= 2008 Then: Điều kiện này kiểm tra xem ngày, tháng và năm hiện tại có thỏa mãn điều kiện (ngày lớn hơn 1, tháng lớn hơn 5 và năm lớn hơn hoặc bằng 2008) hay không. Nếu thỏa mãn, thì yêu cầu người dùng nhập mật khẩu.

Hôm nay là ngày 20 (không có ngày 40) > 1, năm 2024>2008, nhưng hiện tại tháng 4 < 5 nên đoạn mã không hiện khung hỏi mật khẩu là đúng rồi mà!
 
Upvote 0
If ng > 1 And th > 5 And nam >= 2008 Then: Điều kiện này kiểm tra xem ngày, tháng và năm hiện tại có thỏa mãn điều kiện (ngày lớn hơn 1, tháng lớn hơn 5 và năm lớn hơn hoặc bằng 2008) hay không. Nếu thỏa mãn, thì yêu cầu người dùng nhập mật khẩu.

Hôm nay là ngày 20 (không có ngày 40) > 1, năm 2024>2008, nhưng hiện tại tháng 4 < 5 nên đoạn mã không hiện khung hỏi mật khẩu là đúng rồi mà!
Vâng, em ngu ngơ quá, cảm ơn Bác nhiều, em sửa lại cái điều kiện cho hợp lý là được file như em mong muốn
 
Upvote 0
Vâng, em ngu ngơ quá, cảm ơn Bác nhiều, em sửa lại cái điều kiện cho hợp lý là được file như em mong muốn
Bạn có thể tham khảo:
Mã:
...
'Lấy ngày hiện tại
today = Date

' Đặt ngày cần kiểm tra
checkDate = DateSerial(2008, 5, 1)

' Kiểm tra xem ngày hiện tại có lớn hơn hoặc bằng ngày cần kiểm tra không
If today >= checkDate Then
...
 

File đính kèm

  • filetn_.xlsm
    12.7 KB · Đọc: 3
Upvote 0
Bày đặt khóa file này nọ.
Hôm nay đặt file 1 tháng hết sử dụng thì tháng sau sẽ có người vào GPE hỏi:
- Tôi có 1 file ex [sic], tháng trước chạy đàng hoàng, tháng này sao cứ mở là nó bảo file hết hạn rồi đóng luôn.
Thiếu gì người giúp!!!

Mà quý vị giúp khóa files có bao giờ nghĩ rằng người ta có thể lợi dụng để làm khó cơ quan cũ của mình không? (cùng câu hỏi trên, nhưng của một nạn nhân của thằng ác độc nào đó gài files trước khi ròi cơ quan)
 
Upvote 0
Web KT
Back
Top Bottom