名称的秘密Ecel中隐藏着的名称空间

关于Excel的隐藏名称空间这个被隐藏的名称空间是一个属于当前Excel实例的内存区域,该区域加载项DLLs(“XLLS”)能存储临时的名称。使用这个区域,即使没有可利用的宏工作表可用,XLLs也能定义名称。隐藏着的名称操作基于XLM函数SET.NAME、GET.NAME和EVALUATE,而且当在XLM宏工作表中使用时,SET.NAME定义一个标准的工作表级名称,同时,当它在XLL中被调用时,创建一个应用程序级名称并且存储在一个被隐藏的区域中。定义在被隐藏区域的名称有一些特殊的功能,这使得它们与标准工作簿名称有很大的不同。这些功能将在后面描述。与隐藏着的名称相关的可用CAPI命令如下:Excel4(xlfSetName,xResult,2,xName,xValue),定义包含xValue的名称xlName。Excel4(xlfGetName,xResult,1,xName),获取xlName的定义(例如”=1”)并将它存储在xResult中。Excel4(xlfEvaluate,xResult,1,xName),获取xlName的内容(例如:1)并将它存储在xResult中。Excel4(xlfSetName,xResult,1,xName),删除xName(忽略第二个参数)。在VBA中访问被隐藏的名称空间(1)创建一个隐藏的名称下面的语句创建一个包含字符串“OK”的名为Test的隐藏名称:Application.ExecuteExcel4Macro"SET.NAME(""Test"",""OK"")"(2)获取一个隐藏名称所代表的内容为了获取名称Test所代表的内容,使用下面的代码:TestVal=Application.ExecuteExcel4Macro("Test")注意,只使用名称本身作为ExecuteExcel4Macro的参数。(3)删除一个隐藏的名称为了删除名称Test,使用下面的语句:Application.ExecuteExcel4Macro"SET.NAME(""Test"")"注意,忽略了SET.NAME中的第二个参数。被隐藏的名称空间的特征在被隐藏的名称空间中所定义的名称的主要特征是:它们不属于任何工作簿,而属于应用程序本身,这意味着:(1)在Excel中的任何地方可以直接访问这些名称。无论在哪个工作簿中创建了这种名称,在任何工作簿中的任何VBA模块、工作表或宏工作表(和任何DLL加载项)中直接都能直接读取和修改它们。(2)它们的“生存时间”与当前Excel会话一致如果在工作簿Wbk1.xls中的某个VBA模块中创建了一个名称,然后关闭了这个工作簿,那么该名称仍然存储在被隐藏的命名空间中。如果接着打开另一个工作簿Wbk2.xls,那么这个工作簿的VBA过程仍能获取和修改刚才在Wbk1.xls中所创建的名称。在没有被任何VBA加载项所限制的情况下,在被隐藏的名称空间中所定义的名称能作为永久的“公共变量”访问。对于这些属于应用程序的隐藏的名称,关闭所有工作簿和加载项不会销毁它们。通过对SET.NAME(没有第二个参数)明确的调用或者退出并重启Excel,才能销毁它们。在这种情况下,这些名称能作为一种Excel的环境变量来使用。(3)它们是“完全隐藏着的”当一个受保护的加载项使用这个隐藏的名称空间时,新的名称不能被任何其它的VBA模块读取,也不能被用户读取,除非他们知道名称空间的身份证书。没有方法去“列出”被定义在隐藏命名空间中的名称。这些名称无须与标准的隐藏名称(即将工作簿或工作表名称的.Visible属性设置为False)相混淆。标准的工作簿级的名称决不会真正的被隐藏,因为它们能通过使用Application.Names集合的任何VBA过程来获取和修改,如下面的代码所示:DimCNameAsNameForEachCNameInWorkbooks("Wbks1.xls").NamesIfCName.HiddenThenMsgBoxCName.Name"deleted"CName.DeleteEndIfNextCName上面的代码在工作簿Wbks1.xls所有隐藏的名称中循环并删除它们,但是这些代码不能发现存储在被隐藏的命名空间中的名称,因为这些名称不属于Application.Names集合,因此,它们被保护以反对任何恶意的访问或修改。示例下面的代码演示了在受保护的VBA加载项中隐藏着的命名空间的可能的用途。它限制用户在相同的Excel会话中执行加载项主过程超过3次。允许剩余执行次数的计数器没有存储在模块级的变量中,也没有存储在依赖加载项的名称中,而是存储在隐藏的命名空间里。通过排除了传统方法的下列缺点,隐藏的命名空间阻止了用户能够中止保护。(1)像所有变量一样,存储在VBA中的计数器变量能在VBE中手动清除。(2)同样的方式,任何外部过程通过在加载项的Names集合中循环,都可以读取、修改和可...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?