ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7226|回复: 24

[求助] 无解,一键加密Excel工作表公式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-3-24 19:21 | 显示全部楼层 |阅读模式
一键加密Excel工作表公式
  工作表中很多数据都是由公式计算生成的,那么如何让别人只看到计算的结果,而将使用的公式隐藏起来呢?今天我们就向大家介绍使用宏来解决这一问题。

  一、创建宏

  启动Excel,依次选择“工具”—“宏”—“录制新宏”,在打开的窗口中输入宏的名称,并把“保存在”项设为“个人宏工作簿”,单击“确定”按钮进入宏录制模式。此时我们可以在当前窗口中看到宏录制的工具栏,单击“停止录制”退出宏的录制。

  退出后,在Excel中按下“Alt+F11”键,在打开的VB编辑窗口中选择“VBAProject(PERSONAL.XLS)”—“模块”—“模块1”,然后将右侧窗口中的内容替换成:

  Sub 密码保护() //宏的名称

  ActiveSheet.Unprotect ("888888") //默认密码

  Cells.Select

  Selection.Locked = False

  Selection.SpecialCells(xlCellTypeFormulas, 23).Select

  Selection.Locked = True

  Selection.FormulaHidden = True

  ActiveSheet.Protect ("123456")

  ActiveSheet.EnableSelection = xlUnlockedCells

  End Sub

  做好之后保存设置退出编辑窗口,在实际的操作过程中需要将默认的888888换成自己的密码,以免造成泄露。

  二、应用宏

  在Excel中打开“工具”菜单中的“自定义”命令,在“命令”选项卡的“类别”中选择“宏”,在“命令”中选择“自定义按钮”,并将其拖放到工具栏上,单击工具栏上的按钮,在弹出的窗口中选择我们创建的宏名并保存设置。

  至此,我们要加密时只需单击该按钮,就可以将当前工作表保护起来,并且默认密码为888888,怎么样这样的操作是不是够方便呢。
------------------------------------------------------------------------------------------------------------------------------------------------
以上是一位网友以前留得帖子,但是程序只是对工作表进行了保护,并不是对整个EXCEL文件进行加密。能不能按照上面的思路,写出一段对整个EXCEL文件进行加密的程序。

[ 本帖最后由 小妍789 于 2010-3-24 19:43 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-3-24 19:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
程序里的两个密码对不上。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-24 19:26 | 显示全部楼层
就是这个原因吗

我都改成888888,问题还是存在呀

按着上面的思路,请老师给看看,最好再写出一个解密程序。点加密,此EXCEL表到哪台电脑都打不开,只有在本台电脑能开

[ 本帖最后由 小妍789 于 2010-3-24 19:33 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-3-24 19:32 | 显示全部楼层
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
这行代码想锁定“一切有公式的单元格集合”并选中它做SELECTION(很象用宏录制的...)
不过,如果当前表上没有任何公式,它就得到一个空集(NULL),什么都选不到,出错了
所以,你最好在前面加一个ON ERROR句跳过
还有,代码里Unprotect用的888888,加密用的123456,会出问题的

TA的精华主题

TA的得分主题

发表于 2010-3-24 19:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 密码保护()

    ActiveSheet.Unprotect ("123456")

    Cells.Select

    Selection.Locked = False

    Selection.SpecialCells(xlCellTypeFormulas, 23).Select

    Selection.Locked = True

    Selection.FormulaHidden = True

    ActiveSheet.Protect ("123456")

    ActiveSheet.EnableSelection = xlUnlockedCells

    End Sub

就是这样的,把你的文字都删掉。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-24 19:45 | 显示全部楼层
感谢各位高级别老师的帮助
这个程序虽然好,但经过各位老师的讲解我忽然发现,他并不是我最想要的,我最想要的只对整个excel文件进行加密保护 

[ 本帖最后由 小妍789 于 2010-3-24 19:49 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-3-24 20:01 | 显示全部楼层
我说的简单加密还是起作用的,一般人不会看见你的公式。看录像。
简单加密.gif

TA的精华主题

TA的得分主题

发表于 2010-3-24 20:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主大哥,你在主贴补了那个大个字体,那么晃眼的闪光弹,实在太刺激了...

对整个文档加密是两段
1。thisworkbook.Protect 密码字符串
   这一段给文档(WORKBOOK本身加)
2。for each  thisworkbook.sheets 遍历所有工作表,每个工作表加
比如这样
strPws="1234
For Each shtx In ThisWorkbook.Sheets
  shtx.Protect strPws
Next

3.解密时按上面反过来,用worksheet和thsiwrokbook的unprotect方法解

4。加密VBA,这一步要手工来

注意一下,为什么要第1步 THISWORKBOOK的加密,因为你不用的话,文档的结构就可以改了,虽然用户不可以改每张表,但他还是可以增、删、减工作表

TA的精华主题

TA的得分主题

发表于 2010-3-24 20:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
工具—选项—安全性—设置密码。

TA的精华主题

TA的得分主题

发表于 2010-3-24 20:09 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 02:06 , Processed in 0.039530 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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