Mình có một file excel có code, h do đặt tính công việc mình muốn khóa file này lại bằng 1 serial tương tự như của phần mêm kapesky, và 1 file excel khi mở lên thì phải cấp serial này có thời hạn sử dụng là 1 năm.hết hạn sử dụng thì phải cấp lại số serial mới.
Rất mong nhận được nhiều ý kiến đóng góp của mọi người.
Ý mình là :
+ ĐẦu tiên mình muốn có một đoan code để khi lần đầu tiên mở file lên thì phải cung cấp một số serial do mình cài đặt trước và giớ hạn số serial cấp lần đầu đó chỉ sử dụng được file trong thời gian một năm, sau một năm thì file excel đó không sử dụng được nữa -> phải cấp serial lại đó bạn
Ý mình là :
+ ĐẦu tiên mình muốn có một đoan code để khi lần đầu tiên mở file lên thì phải cung cấp một số serial do mình cài đặt trước và giớ hạn số serial cấp lần đầu đó chỉ sử dụng được file trong thời gian một năm, sau một năm thì file excel đó không sử dụng được nữa -> phải cấp serial lại đó bạn
ok đúng rồi bạn.nhưng có cách nào để khi khóa macro thì code tự động bị delete hết không bạn, nếu có xin chỉ giáo nha.
File dính kiemf bên dưới :
http://www.mediafire.com/download/1916ew1rh2mkns8/thukf.rar
Mình có một file excel có code, h do đặt tính công việc mình muốn khóa file này lại bằng 1 serial tương tự như của phần mêm kapesky, và 1 file excel khi mở lên thì phải cấp serial này có thời hạn sử dụng là 1 năm.hết hạn sử dụng thì phải cấp lại số serial mới.
Rất mong nhận được nhiều ý kiến đóng góp của mọi người.
bạn xem file của mình vừa tạo thử, có đáp ứng nổi yêu cầu trên ko?
dưới đây là số serial được cấp:
View attachment 116582
'- - - -
- Nếu nhập sai key thì user ko thể vào chỉnh sửa các sheet khác + ko thể vào xem code VBA.
- khi đóng file thì các sheet được được ẩn đi (ngoài sheet1) <=> Protected.
If Not sRng Is Nothing Then
If sRng.Offset(, 2) < Date Then
MsgBox ("So serial: ") & TextBox1 & " da~ het han su dung", vbExclamation, "Thong bao'": Exit Sub
End If
End If
OK rùi a (e đã sửa key)Sao bạn lại cho tôi sử dụng có 7 ngày thôi? Mà bạn đã trả phí chưa mà đòi dùng 1 năm hả?
Theo tôi thời gian nên kiểm tra hơi khác đề phòng trường hợp người ta (láu cá) "táy máy" lùi đồng hồ. Vd. trước khi mở tập tin thì người ta lùi đồng hồ về ngày tháng mua tập tin - trả phí - thời gian bắt đầu sử dụng file.Mã:If Not sRng Is Nothing Then If sRng.Offset(, 2) < Date Then MsgBox ("So serial: ") & TextBox1 & " da~ het han su dung", vbExclamation, "Thong bao'": Exit Sub End If End If
ờ thì mình copy dán dữ liệu, gửi xong xem lại thấy nó tóe loe vậy nên gửi lại ảnh . Biết có đề tài nói về cách gửi dữ liệu kiểu bảng nhưng chả nhớ . Nhờ bạn chắc không quên nữa đâu, cám ơn bạn !Bạn viết gì vậy ?
Có lẽ bạn nên xem qua bài này trước:
http://www.giaiphapexcel.com/forum/...e-GPE-hoặc-thành-hình-ảnh&p=438183#post438183
OK rùi a (e đã sửa key)do e nhầm thứ tự (ưu tiên member nào trả lời bài này trước)
Nếu ko dựa vào time của hệ thống thì check thế nào? bác có cao kiến gì ko?
sRng.Offset(, 2)
sRng.Offset(, 3)
If Not sRng Is Nothing Then
If sRng.Offset(, 2) < Date Or Date <= sRng.Offset(, 3) Or Date < Range("E1") Then
MsgBox ("So serial: ") & TextBox1 & " da~ het han su dung", vbExclamation, "Thong bao'":
Exit Sub
End If
End If
Bạn có thể cho mình tham khảo code của bạn được không.bạn xem file của mình vừa tạo thử, có đáp ứng nổi yêu cầu trên ko?
dưới đây là số serial được cấp:
View attachment 116588
'- - - -
- Nếu nhập sai key thì user ko thể vào chỉnh sửa các sheet khác + ko thể vào xem code VBA.
- khi đóng file thì các sheet được được ẩn đi (ngoài sheet1) <=> Protected.
Nếu người ta Disable Macros thì người ta không thể sử dụng file được thầy ạ. Vì tác giả bảo file này có macro mà.
Mong thầy Siwtom viết đoạn code để em cùng các thành viên học hỏi với ạ!!!Thực ra là mọi người muốn "bàn ra" nên nói thế thôi. Vẫn có cách vd. như cách của bạn phucbugis. Có những cách mà ta có thể gọi là đủ. Vì dù cách nào thì cũng có người sẽ phá được, nhưng nếu họ chiếm tỉ lệ rất thấp thì có thể gọi là đủ. Lúc đó ta vẫn có thể kiếm tiền từ số đông.
Vấn đề của bạn chủ chủ đề có 2 khía cạnh: serial và giới hạn thời gian. Nếu chỉ là chống những người không biết serial - phải mua mới biết - thì chỉ cần thiết lập mật khẩu cho tập tin. Mật khẩu này hầu như chưa ai biết phá. Tôi nhấn mạnh "hầu như".
Còn vấn đề giới hạn thời gian, tức có mua và biết serial hay mật khẩu, thì hơi khó. Như tôi đã nói, kẻ "láu cá" vẫn có thể qua mặt được.
Chuyện dùng 10 năm hay dùng "muôn đời" là cách nói phóng đại mà thôi. Là nói về lý thuyết. Ý tôi là tôi có thể dùng 2 hoặc 3 năm nếu tôi muốn, nếu tôi cho là phiên bản hiện hành hoàn toàn thỏa mãn nhu cầu của tôi.
Tất nhiên phần mềm nào thì sau một thời gian cũg có phiên bản mới, nhưng nhiều khi những phiên bản mới đó nó chả thêm được gì có ích, có lợi tới mức mà tôi cần phải có phiên bản mới. Như Delphi, như VB (Visual Basic) hay thậm chí Windows, có những phiên bản mới mà chỉ có một câu: thất bại. Thêm những cái không đâu, mầu mè, multimedia hoặc những cái vớ vẩn, về chức năng thì chả hơn gì bản cũ, có cái còn xấu đi không bằng bản cũ. Ngoài ra có thể những chức năng được thêm vào nó chưa phải loại vượt bậc, chưa phải là bước nhẩy vọt từ máy hơi nước sang động cơ đốt thì rất có thể nhiều người không muốn hoặc không có nhu cầu chuyển sang phiên bản mới. Như tôi đây. Tôi chả làm gì tới mức phải có Excel 2010, 2013, Windows 7, 8. Cũng chả phải làm phim chuyên nghiệp hay đồ họa chuyên nghiệp nên cũng chả cần tới máy phải có cấu hình ngày càng mới, RAM khổng lồ, processor 2 nhân, 4 nhân, với đồng hồ đánh nhịp tới xyz GHz. Vậy tôi vẫn dùng XP, thậm chí không Professional mà chỉ Home Edition. Và Excel 2007. Thậm chí có người vẫn dùng Excel 2003.
Không phải ai khi có mới là họ muốn có mới bằng được. Vậy thì họ có thể mua 1 năm nhưng dùng 2, 3 năm. Hay nói theo cách phóng đại của tôi thì là dùng muôn đời.
Tóm lại thì về mặt lý thuyết có thể phá mọi rào cản nhưng về mặt thực tiễn thì ta chỉ cần chống "gà mờ" là đủ. Vì họ là số đông còn "chuyên gia", "láu cá" là thiểu số. Kiếm tiền từ "gà mờ" cũng là đủ rồi.
mình thanl mọi người nhiều nha.mấy bữa nay công việc bận quá không lên được h lên thấy mọi người quan tâm vấn đề của mình wemình cón một vấn đề muốn hỏi nữa không biết mọi người có cách nào giúp được hem?
Là khi mà mở file check key lên nếu như chế độ macro không bậc thì tự động xoá luôn code không biết có lầm được không, nếu được mong mọi người giúp đỡ nha.![]()
Mong thầy Siwtom viết đoạn code để em cùng các thành học hỏi với ạ!!!
hícthank. có còn cái cách mà cập nhập ngày theo internet thì làm sao nhỉ
Anh Phucbugis có thể bổ sung thêm đoạn code theo ý tưởng của thầy siwtom để tránh một số người ăn gian ngày tháng không ạ.
Thì ở bài $14 tôi đã chỉ ra cách dùng "muôn đời" (dùng bởi "láu cá cao thủ"), và cả cách chống "láu cá gà mờ" - có đề nghị code sửa.
Nhưng đề nghị tác giả phucbugis hãy sửa lại trong tập tin và test xem có đúng không. Vì code viết trong notepad, sau khi dán từ tập tin Excel vào notepad thì tôi chỉ viết thêm đk thôi, chưa test.
Hãy sửa cho những người sau này bạn nhé. Còn nếu bạn thấy không cần sửa thì nói một câu cho mọi người biết để khỏi nài nỉ.
ok đúng rồi bạn.nhưng có cách nào để khi khóa macro thì code tự động bị delete hết không bạn, nếu có xin chỉ giáo nha.
File dính kiemf bên dưới :
http://www.mediafire.com/download/1916ew1rh2mkns8/thukf.rar
Mình vẫn chưa biết cách áp dụng. Bạn có thể đưa 1 File ví dụ không?Mình có làm 1 chương trình phục vụ công việc rất hay và cũng thực hiện kiểm tra bản quyền như sau:
khi mở file excel lên nó sẽ kiểm tra 1 file gì đó VD
Private Sub Workbook_Open()
If Dir("C:\Windows\XXXX.dll") = "" Then
MsgBox "Ban chua dang ky su dung phan mem nay!"
UnprotectVBProj "xxxxxxxx"
DeleteAllCode
ActiveWorkbook.Close SaveChanges:=True
End If
Sheets("Main").Activate
ActiveSheet.ScrollArea = "A1:L39"
End Sub
Sub DeleteAllCode()
Dim x As Integer
Dim Proceed As VbMsgBoxResult
Dim Prompt As String
Dim Title As String
Prompt = "Are you certain that you want to delete all the VBA Code from " & _
ActiveWorkbook.Name & "?"
Title = "Verify Procedure"
Proceed = MsgBox(Prompt, vbYesNo + vbQuestion, Title)
If Proceed = vbNo Then
MsgBox "Procedure Canceled", vbInformation, "Procedure Aborted"
Exit Sub
End If
On Error Resume Next
With ActiveWorkbook.VBProject
For x = .VBComponents.Count To 1 Step -1
.VBComponents.Remove .VBComponents(x)
Next x
For x = .VBComponents.Count To 1 Step -1
.VBComponents(x).CodeModule.DeleteLines _
1, .VBComponents(x).CodeModule.CountOfLines
Next x
End With
On Error GoTo 0
End Sub
bạn tham khảo nha, đã thực hiện hoàn hảo
ok, do hôm nay e bận quá, đáng lẽ là xong khi chiều mà đến h mới xong (do test đk của bác gặp 1 tí sự cố), + thêm đang nghiên cứu cái cách kết nối Internet.
bác xem file e mới thêm ở #8 ---> thế có ổn hơn ko![]()
Ơ, bạn chuot0106 có nhu cầu chứ tôi có đâu?
Bạn chuot0106 test rồi báo kết quả nhé. Chả nhẽ mọi việc mọi người đều làm hộ rồi sản phẩm dâng cho bạn?
xem file đính kèm nha bạn View attachment Thu.rarMình vẫn chưa biết cách áp dụng. Bạn có thể đưa 1 File ví dụ không?
Mình vẫn chưa biết cách áp dụng. Bạn có thể đưa 1 File ví dụ không?
mọi người cho mình hỏi làm sao để khi vba project không còn được bảo vệ bằng mật khẩu tức là đã bị hack mật khẩu thì auto delete module không?![]()
Em thấy thầy ndu96081631 không khoái mấy vụ này lắm nhỉ?Thôi thì bạn hãy.. quên đi ý nghĩ đó cho đở mệt người. Nói tóm lại là: không có cách nào để gọi là "chống phá" trong VBA đâu
Để dành hơi sức làm việc khác có ý nghĩa hơn
Em thấy thầy ndu96081631 không khoái mấy vụ này lắm nhỉ?
Em nghĩ tác giả cũng mong muốn 90% người sử dụng không phá được pass là OKE quá rồi.10 % còn lại tác giả chắc phải làm từ thiện thôi.
![]()
a ndu chỉ ra tay khi thấy vấn đề hợp lý thôi.
mình nghĩ tác giả này cũng tàn nhẫn thật thích dùng cách phá huỷ code chứ ko muốn Protect code.![]()
Em thấy thầy ndu96081631 không khoái mấy vụ này lắm nhỉ?
Em nghĩ tác giả cũng mong muốn 90% người sử dụng không phá được pass là OKE quá rồi.10 % còn lại tác giả chắc phải làm từ thiện thôi.
![]()
VBA cò con mà đòi kinh doanh cái giống gì không biếtChắc là đây là File cần bảo mật, tác giả không muốn người khác biết hoặc tác giả định kinh doanh![]()
.VBComponents(x).CodeModule.DeleteLines
Vị trí code đăng ký có thể khác, chi tiết kỹ thuật có thể khác nhưng triết lý thì như tôi nói.
Tất nhiên ta giả thiết là ta chỉ chống "gà mờ".
Ai mà biết flappy bird có phải cò con hay không@ndu: tại sao cò con không thể kiếm tiền, flappy bird là cò con đấy thôi.
tui thì giấu pass ngay trong excel luôn, cầu kỳ một tí nữa thì mã hoá. trong các file excel tui thường dùng 1 sheet ẩn (very hidden) để ghi nhận các khai báo, options, pass...
với xp về trước có 256 sheets thì bạn có thể dò được chứ từ 2007 về sau số lượng sheets không nhất đình, khó mà biết có cái sheets ẩn này.
thực ra thì khoá gì cũng có người phá được, khoá cũng chỉ là với người ngay thôi.
@ndu: tại sao cò con không thể kiếm tiền, flappy bird là cò con đấy thôi.
Tôi nói: "Thường thì ai đó có thể làm thế này". Vì tôi đã gặp trường hợp này, bài trên GPE, nhưng lâu rồi không nhớ tác giả.
Bản thân tôi khi lập trình trong Delphi cũng không bao giờ tôi giấu thông tin trong tập tin trên đĩa, trong registry hay thậm chí trong resource (compile với project). Tôi giấu trong ruột EXE thôi.
Gọi là làm khó dễ mà thôi. Mà cũng chỉ làm một lần cho biết,. Gọi là học, "vọc" xong mảng kiến thức về bảo vệ bản quyền chứ không có ý định làm rào cản gì.
"Giấu trong ruột EXE" là sao anh? Có phải là trong code của Delphi, VB6, ... không?.Tôi nói: "Thường thì ai đó có thể làm thế này". Vì tôi đã gặp trường hợp này, bài trên GPE, nhưng lâu rồi không nhớ tác giả.
Bản thân tôi khi lập trình trong Delphi cũng không bao giờ tôi giấu thông tin trong tập tin trên đĩa, trong registry hay thậm chí trong resource (compile với project). Tôi giấu trong ruột EXE thôi.
Gọi là làm khó dễ mà thôi. Mà cũng chỉ làm một lần cho biết,. Gọi là học, "vọc" xong mảng kiến thức về bảo vệ bản quyền chứ không có ý định làm rào cản gì.
"Giấu trong ruột EXE" là sao anh? Có phải là trong code của Delphi, VB6, ... không?.
"Gọi là làm khó dễ mà thôi": đúng rồi, chỉ làm khó đối với người mới học VBA thôi. Và em đã làm khó được vanle33 tại đây, cứ vào VBA là VBA biến mất, he he.
mã máy em lấy được "BFEBFBFF000306A9" add vào code. Mở file lên lần đầu pase "BFEBFBFF000306A9" là dùng mãi mãi ko hỏi nữa!bạn xem file của mình vừa tạo thử, có đáp ứng nổi yêu cầu trên ko?
dưới đây là số serial được cấp: View attachment 116588
'- - - - -
- Nếu nhập sai key thì user ko thể vào chỉnh sửa các sheet khác + ko thể vào xem code VBA.
- khi đóng file thì các sheet được được ẩn đi (ngoài sheet1) <=> Protected.
'- - - - -
pass VBA: phucbugis
'- - - -
thêm file check key 2 (sửa theo #14)
Link: https://www.mediafire.com/?360e4l38wmmwfq8
'- - - -
check CPUID: Bảo vệ file excel (#7) --> nên sửa lại thành Sub để check 1 lần duy nhất khi Open file (khi dùng hàm trực tiếp có thể ảnh hưởng đến file đang chạy)
Anh ơi, em đang dùng code này của anh, mà sao khi nhập key đúng, thì các sheet sẻ mở, riêng sheet account phải ẩn thì mới bảo mật ạ. (hiện tại sheet acount mở) anh chỉnh lại giúp e với ạ.bạn xem file của mình vừa tạo thử, có đáp ứng nổi yêu cầu trên ko?
dưới đây là số serial được cấp: View attachment 116588
'- - - - -
- Nếu nhập sai key thì user ko thể vào chỉnh sửa các sheet khác + ko thể vào xem code VBA.
- khi đóng file thì các sheet được được ẩn đi (ngoài sheet1) <=> Protected.
'- - - - -
pass VBA: phucbugis
'- - - -
thêm file check key 2 (sửa theo #14)
Link: https://www.mediafire.com/?360e4l38wmmwfq8
'- - - -
check CPUID: Bảo vệ file excel (#7) --> nên sửa lại thành Sub để check 1 lần duy nhất khi Open file (khi dùng hàm trực tiếp có thể ảnh hưởng đến file đang chạy)