ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: guweiping

如何用VBA设置EXCEL使用的有效期?[求助]

[复制链接]

TA的精华主题

TA的得分主题

发表于 2003-8-28 10:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用gwjkkkkk在2003-8-27 21:28:00的发言: 你好,中国龙,请教一个问题,我发觉你的注册程序注册表项它在注册表的位置是固定的,就在HKEY_CURRENT_USER\Software\VB and VBA Program Settings下,可不可以在自己喜欢的任意位置写在注册表中呢。
您好: 用VBA內建的註冊函數是比較方便,但是如您說它的"注册表的位置是固定的",這是不可能再更動的了,所以如如您說的"在自己喜欢的任意位置写在注册表中",那就必須調用API函數了 不過我覺得API函數在處理註冊函數的方便性不如 "Windows Script" 所以我今天較介紹一下 "Windows Script"在註冊表上的讀.寫.刪除的用法 以下方法只適用於 Windows 2000以上 Script 能使用的根鍵值有五個 根鍵名稱 HKEY_CURRENT_USER '縮寫 HKCU HKEY_LOCAL_MACHINE '縮寫 HKLM HKEY_CLASSES_ROOT '縮寫 HKCR HKEY_USERS '縮寫 HKEY_USERS HKEY_CURRENT_CONFIG '縮寫 HKEY_CURRENT_CONFIG RegWrite:建立新鍵、將另一個值名稱加入現有鍵 (並將值指派給它),或變更現有值名稱的值。 例子 Sub RegWrite() Dim WshShell, bKey Const Term = 10 '有效期限10天 fname = ThisWorkbook.Name TermDate = DateSerial(Year(Now), Month(Now), Day(Now)) + Term Regkey = "HKCU\Chinese dragon\Budget\Date\" & fname Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite Regkey, TermDate, "REG_SZ" End Sub RegRead :從註冊傳回鍵的值或值名稱 例子 Sub RegRead() Dim WshShell, bKey fname = ThisWorkbook.Name Regkey = "HKCU\Chinese dragon\Budget\Date\" & fname Set WshShell = CreateObject("WScript.Shell") bKey = WshShell.RegRead(Regkey) End Sub RegDelete :從註冊刪除某鍵或它的一個值(請小心使用) 例子 Sub RegDelete() Dim WshShell, bKey Regkey = "HKCU\Chinese dragon\Budget\Date\" Set WshShell = CreateObject("WScript.Shell") WshShell.RegDelete Regkey '刪除檔名 '也可是試試 WshShell.RegDelete "HKCU\Chinese dragon\" '刪除Chinese dragon End Sub
[此贴子已经被作者于2003-8-28 12:05:19编辑过]

TA的精华主题

TA的得分主题

发表于 2003-8-28 12:00 | 显示全部楼层
thankyou中国龙

TA的精华主题

TA的得分主题

发表于 2003-8-28 12:01 | 显示全部楼层
中国龙, 看了你们的贴, 非常感兴趣, 但不太理解, 查阅帮助文件却没找到, 能否给我们上一堂关于注册程序注册表的基本概念的课, 谢谢!

TA的精华主题

TA的得分主题

发表于 2003-8-28 16:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用jo_yao在2003-8-28 12:01:00的发言: 中国龙, 看了你们的贴, 非常感兴趣, 但不太理解, 查阅帮助文件却没找到, 能否给我们上一堂关于注册程序注册表的基本概念的课, 谢谢!
您好: 有興趣請參考這篇文章 Windows 登录文件指南 什么是登录档? 登录档是用来存储 Microsoft Windows? 32 位操作系统(包括 Windows 95, 98, ME 和 NT/2000)的设定和选项的一个数据库。它包含计算机上所有硬件, 软件, 使用者和参数的讯息和设定。无论什么时候, 使用者对一个控制台设定, 档案关联或者系统策略做出更改, 或者安装软件, 更改都会反映并且储存到登录档中。 根据你的 Windows 版本不同, 组成登录档的物理档案存储的方式也不同: 在 Windows 95/98 下, 它包含在 Windows 目录下的的两个隐藏档案中, 这两个档案是 USER.DAT 和 SYSTEM.DAT, 对于 Windows Me, 还有一个另外的档案 CLASSES.DAT , 而在 Windows NT/2000 下, 档案单独包含在 %SystemRoot%\System32\Config 目录。你不能直接编辑这些档案, 要进行任何更改, 必须使用一个众所周知的工具即"登錄檔編輯器"(關於使用登錄檔編輯器, 將在本文後面討論)。 登录文件结构 登录文件有一个树状结构, 尽管看起来复杂, 但是这个结构和你的硬盘上的目录结构很相似, 而 Regedit 则类似于 Windows 档案总管。 有六个主要分支, 每一个包含储存在登录文件中的讯息的一个特定部分。它们是: HKEY_CLASSES_ROOT - 这个主分支包含支持拖放功能, OLE 讯息, Windows 快捷方式和 Windows 使用者界面核心方面的所有档案关联映像。 HKEY_CURRENT_USER - 这个主分支链接到 HKEY_USERS 中与目前登录到 PC 的使用者相对应的部分, 包含诸如登录名称, 桌面设定和开始选单设定之类的讯息。 HKEY_LOCAL_MACHINE - 这个主分支包含在一台给定 PC 上的硬件类型, 软件以及其它参数等计算机详细讯息, 这些讯息适用于登录到这台计算机的所有使用者。 HKEY_USERS - 这个主分支包含每一个计算机使用者的单独参数设定, 每一个使用者由主分支下的一个 SID 子键代表。 HKEY_CURRENT_CONFIG - 这个主分支链接到 HKEY_LOCAL_MACHINE 中与目前硬件配置相对应的部分。 HKEY_DYN_DATA - 这个主分支指向 HKEY_LOCAL_MACHINE 部分, 由 Windows 即插即用功能使用, 这个部分是动态变化的, 当加入设备或者设备从系统中删除时, 它将相应发生更改。 每一个登录档数值以下面五种主要数据类型中的一种存储: REG_BINARY - 这种类型以原始的二进制数据存放数值。大多数硬件组件讯息存储为二进制数据, 在编辑器中可以显示为十六进制格式。 REG_DWORD - 这种类型用一个四位的数字表示数据, 普通用于存放布尔值, 例如 "0" 表示禁用, 而 "1" 表示启动。此外, 许多设备驱动程序的参数和服务都是这种类型, 并且在 REGEDT32 中可以显示为二进制, 十六进制和十进制格式, 或者在 REGEDIT 中显示为十六进制和十进制格式。 REG_EXPAND_SZ - 这种类型是一个扩展的字符串数据, 这个字符串包含一个变量, 该变量在由一个应用程序调用时被替换。例如, 对于下面这个数值, 字符串 "%SystemRoot%" 将被替换为包含 Windows NT 系统档案的目录的实际位置(只有在使用一个高级的登录档编辑器例如 REGEDT32 时, 这种类型才可用)。 REG_MULTI_SZ - 这种类型是一个多重字符串, 用于表示清单或有多重值的数值, 每一个项目由一个 NULL 字符分隔。(只有在使用一个高级的登录档编辑器例如 REGEDT32 时, 这种类型才可用) REG_SZ - 这种类型是一个标准的字符串, 用来表示人类可读的文字值。 不能通过标准的登录档编辑器使用的其它数据类型包括: REG_DWORD_LITTLE_ENDIAN - 一个 32 位数字(little-endian 格式)。 REG_DWORD_BIG_ENDIAN - 一个 32 位数字(big-endian 格式)。 REG_LINK - 一个 Unicode 符号链接。用于内部; 应用程序不能使用这种类型。 REG_NONE - 没有定义数值类型。 REG_QWORD - 一个 64 位数字。 REG_QWORD_LITTLE_ENDIAN - 一个 64 位数字(little-endian 格式)。 REG_RESOURCE_LIST - 一个设备驱动程序资源清单。 编辑登录档 登录档编辑器(REGEDIT.EXE)包含在 Windows 的大多数版本中(尽管你在开始选单中找不到它)。它允许你检视, 搜索和编辑登录档中的数据。有几种方式可以启动登录档编辑器, 最简单的方式就是单击"开始"按钮, 然后选择"执行", 在"开启"框中输入"regedit", 如果已经安装了登录档编辑器, 它现在应该开啟 对于使用 Windows NT/2000 的使用者而言, 作为一种选择, REGEDT32.EXE 也是一个可用的登录档编辑器, 它包含在标准版本中找不到的一些附加功能, 包括: 检视和修改安全许可的功能, 以及能够建立和修改扩展字符串数值 REG_EXPAND_SZ 和 REG_MULTI_SZ 。 建立一个 Regedit 的快捷方式 要完成这项操作, 只需简单地在桌面的一个空白区域单击右键, 选择"新增", 然后选择"快捷方式", 在命令行输入框中键入 "regedit.exe", 单击"下一步", 输入一个友好的名称(例如 "登录档编辑器"), 然后单击"完成"。现在你可以在新图示上双击, 加载登录档编辑器。 使用 Regedit 修改你的登录档 在启动 Regedit 后, 你会注意到左边是一个资料夹树, 而右边则是目前选取的资料夹的内容(数值)。 和 Windows 档案总管一样, 要展开某一个分支(参阅"登录文件结构"), 单击任意一个数据夹左边的加号 [+], 或者在数据夹上直接双击。要显示一个主机码(数据夹)的内容, 直接单击期望的主机码, 然后检视列在右边的数值。你可以从"编辑"选单中选择"新增"或者单击鼠标右键, 加入一个新的主机码或者数值。并且, 你可以使用与重命名档案相同的的方式重命名任何数值和几乎任何主机码: 在一个对象上单击右键并选择"重命名", 或者在一个对象上单击两次(慢速), 或者直接按键盘上的 F2 。最后, 要刪除一個主機碼或者數值, 你可以單擊它, 然後按鍵盤上的 Delete , 或者在它上面單擊右鍵, 然後選擇"刪除"。 备注: 在对登录档做出任何更改之前, 先备份你的登录档总是一个好主意。对于一个新手而言, 应该无条件地这样做, 因为总是存在这样的可能性: 更改或者删除一个关键设定, 会导致你不得不重新安装整个操作系统。与其后悔, 不如以安全为重(有备无患)! 导入和汇出登录档设定 登录文件编辑器的一个强大功能就是, 它能够导入或汇出登录档设定为一个文本文件, 这个文本文件以 .REG 扩展名为标识, 为方便修改本地登录档设定, 它可以被储存或者与其它人共享。通过简单地汇出一个主机码到一个档案, 然后在记事本中开启它, 你可以看到这个文本文件结构, 要使用登录档编辑器做到这一点, 选择一个主机码, 从"登录档"选单中选择"汇出登录档档案...", 选择一个文件名后单击"储存"。如果你在记事本中开启这个档案, 你会看到类似于下面这个例子的一个档案: REGEDIT4 [HKEY_LOCAL_MACHINE\SYSTEM\Setup] "SetupType"=dword:00000000 "CmdLine"="setup -newsetup" "SystemPrefix"=hex:c5,0b,00,00,00,40,36,02 这个档案的结构相当简单, REGEDIT4 指出档案类型和版本, [HKEY_LOCAL_MACHINE\SYSTEM\Setup] 指出数值来自哪一个主机码, "SetupType"=dword:00000000 就是数值自身, "=" 后面的部分根据数值的类型不同而不同, 它们是: DWORD, String 或 Binary 。 这样, 通过简单地编辑这个档案, 就可以做出任何你需要的更改, 并且可以方便地发布它, 要将设定加入进系统登录文件, 你要做的所有事情就是双击它, 或者从"登录档"选单中选择"导入"。 使用一个 REG 档案删除主机码或数值 使用 REG 档案删除主机码或者数值也是可能的。要删除一个主机码, 使用与上面的 REG 档案相同的格式, 但是在你要删除的主机码名称之前放置一个 "-" 符号。例如, 要删除 [HKEY_LOCAL_MACHINE\SYSTEM\Setup] 主机码, reg 档案应该是这样: REGEDIT4 [-HKEY_LOCAL_MACHINE\SYSTEM\Setup] 用于删除单独数值的格式与此类似, 但是减号"-"不是放在整个主机码的前面,而是放在数值等号"="的后面。例如, 要删除数值 "SetupType", 档案应该是这样: REGEDIT4 [HKEY_LOCAL_MACHINE\SYSTEM\Setup] "SetupType"=- 请小心使用这个功能, 因为删除错误的主机码或数值可能会导致登录档内部出现大问题, 所以记住总是先制作一个备份。 Regedit 命令行选项 Regedit 有一些命令行选项, 帮助在批处理档案中或者命令提示符下使操作自动化。下面列出的是其中的一些选项, 请注意某些功能只适用于特定的操作系统。 regedit.exe [选项] [文件名] 文件名 导入 .reg 档案到登录档 /s 安静模式, 即导入档案时隐藏确认对话框 /e 汇出登录档档案 例如: regedit /e file.reg HKEY_USERS\.DEFAULT /L:system 指定要使用的 system.dat 档案的位置 /R:user 指定要使用的 user.dat 档案的位置 /C 压缩 [文件名](Windows 98) 储存登录档 怎样备份和还原登录档? Windows 95 Microsoft 在 Windows 95 安装光盘中包含一个工具, 允许你建立你的计算机登录文件的备份。Microsoft 配置备份程序, CFGBACK.EXE, 可以在 Windows 95 安装光盘上的 \Other\Misc\Cfgback 目录中找到。这个工具允许你建立多至 9 个登录档的副本, 这些副本扩展名为 .RBK , 存放在你的 \Windows 目录中。如果你的系统被设定为多使用者, CFGBACK.EXE 将不会备份 USER.DAT 档案。 在备份了你的登录档之后, 你可以复制 .RBK 档案到一张软盘上, 保管好以备不时之需。但是, 要还原一个备份, .RBK 档案必须位于 \Windows 目录。Windows 95 以压缩格式储存备份, 这种格式只能通过使用 CFGBACK.EXE 工具才能还原。 Windows 98 Microsoft Windows 98 在每一次 Windows 启动时自动建立一个登录档备份副本, 此外, 通过从"开始 -> 执行"选单中执行 SCANREGW.EXE, 你可以使用"登录档检查器"手动建立一个备份。 如果遇到一个损坏的登录档, 应该做什么? Windows 95, 98 和 NT 都有一个相当可靠的简单的登录档备份机制, 当然你永远不应该单纯地依赖它, 记住总是先制作一个备份! Windows 95 在 Windows 目录下有几个隐藏档案, 其中四个是: SYSTEM.DAT 和 USER.DAT - 你的目前登录档, 以及 SYSTEM.DA0 和 USER.DA0 - 你的登录档的一个备份。Windows 9x 有一个很好的功能, 如果每一次启动看起来成功完成, 它将复制登录档覆盖这些备份文件, 所以在出现问题的情况下, 可以还原到最后一次正确的配置状态。要还原登录档, 请依照下面的说明进行: 1. 单击"开始"按钮, 然后单击"关闭"。 2. 单击"重新启动计算机并切换到 MS-DOS 方式", 然后单击"是"。 3. 转到你的 Windows 目录。例如, 如果你的 Windows 目录是 c:\windows, 你应该输入下面的内容: cd c:\windows 4. 输入下面的命令, 在每一条命令之后敲回车键 ENTER 。(注意: 档案 SYSTEM.DA0 和 USER.DA0 包含数字"0"。) attrib -h -r -s system.dat attrib -h -r -s system.da0 copy system.da0 system.dat attrib -h -r -s user.dat attrib -h -r -s user.da0 copy user.da0 user.dat 5. 重新启动你的计算机。 依照这个步骤操作之后, 你的登录档将还原到你的计算机最后一次成功启动时的状态。 如果其它所有的办法都不行, 在你的硬盘上有一个名为 SYSTEM.1ST 的档案, 它由 Windows 95 在第一次成功安装时建立。如果必要, 你也可以把这个档案的属性从只读和隐藏更改为存盘, 然后复制这个档案覆盖 C:\WINDOWS\SYSTEM.DAT 档案。 Windows NT 在 Windows NT 中, 你可以使用"最后一次正确的配置"选项或者 RDISK 还原登录文件到一个稳定的工作配置。 怎样从登录档中清除旧的数据? 尽管有可能手动搜索登录文件并删除多余的项目, Microsoft 仍然提供了一个使这个过程自动化的工具, 这个程序叫做 RegClean 。RegClean 分析存储在 Windows 登录文件中一个公用位置的登录文件主机码。它寻找包含错误数值的主机码, 在将那些项目记录到 Undo.Reg 档案之后, 从 Windows 登录档中删除它们 如果想進一步了解拜訪以下網站 http://www.winguides.com

TA的精华主题

TA的得分主题

发表于 2003-8-28 17:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
看完Windows 登录文件指南,介紹一個實用的例子 在桌面顯示Windows 的版本 Windows 的早期版本在桌面上显示它们的版本号, 发行版本删除了这个功能。如果你处于一个环境中, 在那里迅速定位 Windows 版本可能会很有用, 那么可以使用这个技巧重新启动这个功能。 使用者主机码: [HKEY_CURRENT_USER\Control Panel\Desktop] 名称: PaintDesktopVersion 类型: REG_DWORD (DWORD 值) 值: (0 = 禁用, 1 = 启动) 建立一个新的 DWORD 值, 或者使用下面的设定修改名为 "PaintDesktopVersion" 的数值, 设定它的值等于 "1" 显示版本。 範例: Sub RegWrite() Dim WshShell, bKey Regkey = "HKCU\Control Panel\Desktop\PaintDesktopVersion" Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite Regkey, 1, "REG_DWORD" End Sub 執行完以上程式碼,請將電腦重新開機,成果就獲展現出來(桌面的右下角)

如何用VBA设置EXCEL使用的有效期?[求助]

如何用VBA设置EXCEL使用的有效期?[求助]

TA的精华主题

TA的得分主题

发表于 2003-8-29 20:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2003-8-29 20:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
WINDOWS高手.

TA的精华主题

TA的得分主题

发表于 2004-3-22 14:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-3-2 11:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不错。应修改系统时间修改带来的问题

TA的精华主题

TA的得分主题

发表于 2004-12-23 00:30 | 显示全部楼层

好贴,,,,但是问一个问题,,,

如果我修改了系统时间,那不是设置的限制时间又没有用了吗???

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-2-1 04:03 , Processed in 0.027793 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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