利用JSA保护WPS表格公式不被修改

在使用 WPS 表格时,我们有时需要保护已设置好的公式不被他人修改,究其原因,主要有以下两种情况。
一是不希望他人知晓公式内容,说白了就是不想让别人了解具体的计算逻辑;二是担心他人误删或误改公式,从而导致数据计算出现错误。
微软 Office 中的 Excel 表格可通过 VBA 实现公式保护,而 WPS 的 ET 表格则可以借助JSA 脚本来完成相同功能。
测试数据:
这是一个累积求和的简单例子,我们可以通过编辑栏的公式,清楚地了解其计算逻辑。

现在我们想让这个公式隐藏起来,怎么办?
测试代码:
function test(){try{var rng = Cells.SpecialCells(xlCellTypeFormulas,23);}catch(err){return;}rng.Locked = true;rng.FormulaHidden = true;ActiveSheet.Protect("",false,true,false,false,false,false,false,false,false,false,false,false,false,false,false);}
测试结果:

代码解释:
第3行:查找当前工作表中所有包含公式的单元格,返回单元格区域对象。其中第二个参数23表示所有的类型公式,如数字/文本/逻辑值/错误值等。
第6行:如果没有发现公式就直接退出函数,从而避免后续代码执行时出错。
第8行:将找到的公式单元格设置为“锁定“状态。
第9行:将公式单元格的公式内容隐藏,即编辑栏中不显示公式,而只在单元格中显示计算结果。
第10行:ActiveSheet.Protect的参数有16个,最主要的是第三个参数保护单元格内容。
总之,代码的核心逻辑是先定位所有公式单元格,然后锁定单元格加隐藏公式,最后启用工作表保护。只有这几个一起配合才能生效。
今天的分享就到这儿啦,非常感谢您对“Python SQL审天下”公众号的关注和点赞。如果您觉得我的公众号能给您带来一丝丝的收获,请多多转发给您的朋友圈,让更多的人看到并了解。也许您不经意间的点赞和转发,会给他人带来独特的体验和感受。
夜雨聆风
