Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2137|回复: 5

[已解决]请高手帮助解释下这段代码

[复制链接]
发表于 2009-12-25 09:34 | 显示全部楼层 |阅读模式

请高手帮助注释下这段代码,谢谢!

Private Sub Workbook_Open()
    Sheet1.ScrollArea = "a1"
  If GetHardDiskInfo(hdPrimaryMaster, hdOnlySN) = Sheet1.Range("D1") Then Initialize: AddCustonCommands: Exit Sub
    Dim FirstDate, de, days
    FirstDate = Date
    de = GetSetting("XXX", "YYY", "date", "")
    If de = "" Then
        SaveSetting "XXX", "YYY", "date", FirstDate
Initialize: AddCustonCommands       
    Else
        days = Date - CDate(de)
        If days > 5 Then           
            ThisWorkbook.ChangeFileAccess xlReadOnly
            Kill ThisWorkbook.FullName
            ThisWorkbook.Close False
        End If 
        Initialize
        AddCustonCommands    
    End If
End Sub

最佳答案
2009-12-25 09:54

Private Sub Workbook_Open()     '文件打开时运行
    Sheet1.ScrollArea = "a1" '在Sheet1里面,用户不能选定A1区域之外的单元格。换言之就是锁定,不能使用。
    '这个是自定义函数,看样子好像是得到硬盘信息的。判断硬盘是否指定的硬盘,若不是则删除。
    If GetHardDiskInfo(hdPrimaryMaster, hdOnlySN) = Sheet1.Range("D1") Then Initialize: AddCustonCommands: Exit Sub
    Dim FirstDate, de, days
    FirstDate = Date    '取今天的日期
    de = GetSetting("XXX", "YYY", "date", "")       '到注册表里面找de的值
    If de = "" Then                     '如果没有找到,则说明是第一次使用,则将今天日期写入注册表de里面
        SaveSetting "XXX", "YYY", "date", FirstDate
Initialize: AddCustonCommands
    Else
        days = Date - CDate(de) '判断今天距离第一天使用是否大于5天,若大于5天则自杀。否则,开始运行程序。
        If days > 5 Then
            ThisWorkbook.ChangeFileAccess xlReadOnly '改变文件属性
            Kill ThisWorkbook.FullName  '自杀
            ThisWorkbook.Close False    '关闭
        End If
        Initialize                  '初始化程序
        AddCustonCommands           '可加入自己的其他命令
    End If
End Sub
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2009-12-25 09:54 | 显示全部楼层    本楼为最佳答案   


Private Sub Workbook_Open()     '文件打开时运行
    Sheet1.ScrollArea = "a1" '在Sheet1里面,用户不能选定A1区域之外的单元格。换言之就是锁定,不能使用。
    '这个是自定义函数,看样子好像是得到硬盘信息的。判断硬盘是否指定的硬盘,若不是则删除。
    If GetHardDiskInfo(hdPrimaryMaster, hdOnlySN) = Sheet1.Range("D1") Then Initialize: AddCustonCommands: Exit Sub
    Dim FirstDate, de, days
    FirstDate = Date    '取今天的日期
    de = GetSetting("XXX", "YYY", "date", "")       '到注册表里面找de的值
    If de = "" Then                     '如果没有找到,则说明是第一次使用,则将今天日期写入注册表de里面
        SaveSetting "XXX", "YYY", "date", FirstDate
Initialize: AddCustonCommands
    Else
        days = Date - CDate(de) '判断今天距离第一天使用是否大于5天,若大于5天则自杀。否则,开始运行程序。
        If days > 5 Then
            ThisWorkbook.ChangeFileAccess xlReadOnly '改变文件属性
            Kill ThisWorkbook.FullName  '自杀
            ThisWorkbook.Close False    '关闭
        End If
        Initialize                  '初始化程序
        AddCustonCommands           '可加入自己的其他命令
    End If
End Sub
回复

使用道具 举报

 楼主| 发表于 2009-12-25 10:29 | 显示全部楼层

谢谢amulee老师解释的非常清楚,但是我想问一下如果软件不是第一次使用也就是将 将使用日期写入注册表de里面,哪怎么能找到注册表de这个值并将其初始化呢!我从文件中找到这么一段代码正在这学习想修改一下变为己用,谢老师再指教!
回复

使用道具 举报

发表于 2009-12-25 10:34 | 显示全部楼层

这里用了de = GetSetting("XXX", "YYY", "date", "")来获取写入注册表的值
回复

使用道具 举报

 楼主| 发表于 2009-12-25 10:46 | 显示全部楼层

amulee老师那怎么能再初始这个值,请老师详细指教?
回复

使用道具 举报

发表于 2009-12-25 10:53 | 显示全部楼层

这里用了函数GetSetting和语句SaveSetting

GetSetting 函数

      

从 Windows 注册表中 或 (Macintosh中)应用程序初始化文件中的信息的应用程序项目返回注册表项设置值。

语法

GetSetting(appname, section, key[, default])

GetSetting 函数的语法具有下列命名参数

部分描述
appname必要。字符串表达式,包含应用程序或工程的名称,要求这些应用程序或工程有注册表项设置。 在Macintosh中,这是System文件夹中Preferences文件夹中初始化文件的文件名。
section必要。字符串表达式,包含区域名称,要求该区域有注册表项设置。
key必要。字符串表达式,返回注册表项设置的名称。
default可选。表达式,如果注册表项设置中没有设置值,则返回缺省值。如果省略,则 default 取值为长度为零的字符串 ("")。

说明

如果 GetSetting 的参数中的任何一项都不存在,则 GetSetting 返回 default

SaveSetting 语句

      

在 Windows 注册表中 或 (Macintosh中)应用程序初始化文件中的信息保存或建立应用程序项目。

语法

SaveSetting appname, section, key, setting

SaveSetting 语句的语法具有下列命名参数

部分描述
appname必要。字符串表达式,包含应用程序或工程的名称,对这些应用程序或工程使用设置 在Macintosh中,这是System文件夹中Preferences文件夹中初始化文件的文件名。
section必要。字符串表达式,包含区域名称,在该区域保存注册表项设置。
key必要。字符串表达式,包含将要保存的注册表项设置的名称。
setting必要。表达式,包含 key 的设置值。

说明

如果无论如何也不能保存注册表项设置,则将导致错误发生。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-7 07:13 , Processed in 0.926462 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表