用vba限制非注册软件应用时间[新版]
用VBA限制非注册软件使用时间
用VBA限制非注册软件使用时间
江苏无锡市
李激扬
---- 对于共享软件来言,在软件未注册时仅提供有限时间和有限次数的使用权限,当超过使用期限,程序给出提示信息并关闭程序。在EXCEL中如果你用宏进行了两次开发,你希望使此开发程序在时间和次数上对非注册用户有所限制,那么不妨试一下以下方法。
---- 1、在工作簿中新建一工作表,本文命名为"时间次数限制"表。
---- 2、在"时间次数限制"表单元格IV65536键入 = TODAY();在单元格IV65533键入1;(可按"Ctrl+向下键"即可到IV65536)
---- 3、打开 Visual Basic 编辑器,在当前工作簿新建一模块,在代码窗口输入如下代码:(可不输入插入在程序内的解释语句)
Option Explicit
Const Degree As Integer = 30
'Degree 是程序使用次数的限制常量 Const Time As Integer = 30
'Time 是程序使用时间的限制常量
Sub auto_open()
//auto_open()程序每次启动时自动运行 Dim I As Integer //当前程序的使用次数变量
Dim ThisTime As Long //当前程序使用时间变量 Dim LastTime As Long //上次程序使用时间变量 Dim Comp As Long //时间比较变量
ActiveWindow.WindowState = xlMinimized
//最小化当前程序窗口
Application.ScreenUpdating = False
//宏执行时,屏幕冻结
Sheets("时间次数限制").Visible = xlSheetVisible
//使"时间次数限制"表可见
Sheets("时间次数限制").Select
I = Sheets("时间次数限制").Range("IV65533").Value
//读取保存在表"时间次数限制"中的程序的使用次数的值
If I = 1 Then
Sheets("时间次数限制").Range("IV65536").Select
Selection.Copy
Sheets("时间次数限制").Range("IV65535").Select
Selection.PasteSpecial Paste:=xlValues
Sheets("时间次数限制").Range("IV65534").Select
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Else
Sheets("时间次数限制").Range("IV65536").Select
Selection.Copy
Sheets("时间次数限制").Range("IV65535").Select
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
//将单元格IV65536中的当前时间以纯数字形式粘贴至
单元格IV65535
ThisTime = Sheets("时间次数限").Range("IV65535")
LastTime = Sheets("时间次数限制").Range("IV65534")
Comp = ThisTime - LastTime
If Comp < Time And I < Degree And Comp > -1 Then
Sheets("时间次数限制").Range("IV65536").Select
Selection.Copy
Sheets("时间次数限制").Range("IV65534").Select
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
//将单元格IV65536中的当前时间
以纯数字形式粘贴至单元格IV65534
Else
//当程序在超过使用期限或使用次数时提示用户, 并关闭工作簿,退出程序
MsgBox "您已超过了未注册软件的使用时间~"
Sheets("时间次数限制").Visible=xlSheetVeryHidden
ActiveWorkbook.Close SaveChanges:=False Exit Sub
End If
End If
I = I + 1
Sheets("时间次数限制").Range("IV65533").Value = I
//累加程序使用次数并回传至将单元格IV65533 Sheets("时间次数限制").Visible = xlSheetVeryHidden
//使"时间次数限制"表用户不可见
ActiveWorkbook.Save
//保存当前活动工作簿
Application.ScreenUpdating = False //激活窗口
ActiveWindow.WindowState = xlMaximized //最大化当前程序窗口
End Sub
---- 4、在Visual Basic 编辑器的项目窗口单击"时间次数限制"表, 在属性窗口中的Visible选择xlSheetVeryHidden。
---- 5、在Visual Basic 编辑器的项目窗口右键点击VBAProject,选择VBAProject(属性)...,在保护标签中选中"查看时琐定工程"并在密码和确认密码中键入8位以上的密码。(不易被解密软件破译)
---- 6、保存本工作簿,退出即可。
---- 从安全的角度分析以上步骤,如果使用者修改系统时间,将时
间恢复至安装软件之日,由于和最近软件使用时间相比为负值仍不能
正常使用,另外对于使用次数又有逐次累计不可能被修改.
---- 如果使用者打开程序时按住"Shift"键,阻止auto_open宏的运
行的话,由于任何一次打开程序时,填写使用次数和使用时间变量的
工作表都处于" xlSheetVeryHidden"状态,在此状态下不可以从取消
隐藏工作表的方法予以显示工作表,唯一显示工作表的途径
VBAProject又被加密(一旦解密由于使用次数和使用时间变量的单
元格位于工作表底端不易被发现).也不易被使用者修改,更何况在
此种状态下所有宏程序都将被终止。充分保护了软件的使用权限。