分享Excel VBA操作,保护工作表用法
本帖最后由 yuantian 于 2021-3-24 21:20 编辑前言:【本帖可能会比较啰嗦,劳烦大家伙儿耐心看完】
1.最近在学习Excel相关文件处理,突发奇想,是否可以利用AU3实现保护工作表。
查询本论坛相关内容及国外AU3官方论坛,只找见了简单的添加密码,
只有这一句。。。
$oWorkbook.ActiveSheet.Protect("123")
并不能自定义一些功能,例如保护工作表后,允许插入列,或者删除列
[就是允许自定义勾选以下内容]
2.然后事先通过录制Excel宏命令,获取到了Excel VBA当中可能会用到的命令
Sub 宏1()
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
End Sub
3.我看到这个宏命令之后,还是比较懵的,
因为并不知道怎么把这类的代码转化为AU3能够识别的格式
尝试改过一版,
With $oWorkbook.ActiveSheet
.Protection.DrawingObjects=True
.Protection.Contents=True
.Protection.Scenarios=True
.Protection.AllowFormattingCells=True
.Protection.AllowFormattingColumns=True
.Protection.AllowFormattingRows=True
.Protection.AllowInsertingColumns=True
.Protection.AllowInsertingRows=True
.Protection.AllowInsertingHyperlinks=True
.Protection.AllowDeletingColumns=True
.Protection.AllowDeletingRows=True
.Protection.AllowSorting=True
.Protection.AllowFiltering=True
.Protection.AllowUsingPivotTables=True
.Protect("123")
Endwith结果运行之后,发现程序只进行加密了,并不能实现自定义选择保护内容反复在查找是否格式不正确,不得解、、
4.最后在AU3英文论坛上偶然看到一条注释,写法为
;$excel.Activesheet.Protect("", True, True)这个就突然提醒我了,是不是只有这一个功能,然后像一般的函数一样,那些条件只是函数里的部分参数,默认不修改的那种
于是反复测试,一点点儿记录,最终得到了算是能够满足需求的
5.最最后,话不多说,上代码
#include <Excel.au3>
$sFilePath = @ScriptDir & "\Test.xlsx"
$oExcel = _Excel_Open()
$oWorkbook = _Excel_BookNew ($oExcel, 1)
;表格内容填充
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "Data", "A1");
Local $aArray2D = [, , ]
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aArray2D, "B2")
$oWorkbook.ActiveSheet.Protect("123", _ ;密码
True, _ ;True,保护形状; False,允许修改形状;
True, _ ;True,保护内容,保护图表
True, _ ;True,保护方案; False,允许修改形状;
True, _ ;True,保护用户界面但不保护宏; False,则既保护宏也保护用户界面;
True, _ ;True,允许设置单元格格式; False,取消勾选; | AllowFormattingCells
True, _ ;True,允许设置列格式; False,取消勾选; | AllowFormattingColumns
True, _ ;True,允许设置行格式; False,取消勾选; | AllowFormattingRows
True, _ ;True,允许插入列; False,取消勾选; | AllowInsertingColumns
True, _ ;True,允许插入行; False,取消勾选; | AllowInsertingRows
True, _ ;True,允许插入超链接; False,取消勾选; | AllowInsertingHyperlinks
True, _ ;True,允许删除行; False,取消勾选; | AllowDeletingColumns
True, _ ;True,允许删除列; False,取消勾选; | AllowDeletingRows
True, _ ;True,允许排序; False,取消勾选; | AllowSorting
True, _ ;True,允许使用自动筛选; False,取消勾选; | AllowFiltering
True _ ;True,允许使用数据透视表和数据透视图; False,取消勾选; | AllowUsingPivotTables
)
$oWorkbook.ActiveSheet.EnableSelection = 0 ;xlUnlockedCells=1,只能选择未锁定单元格;xlNoSelection=-4142,不能选择任何内容;xlNoRestrictions=0,可以选择任何内容。
_Excel_BookSaveAs($oWorkbook, $sFilePath, Default, True)
--------------------------------------
6.微软查到VBA内容相关:
(1)关于保护工作表基础内容
https://docs.microsoft.com/zh-cn/office/vba/api/excel.chart.protect
(2)关于保护工作表Protection 对象内容
https://docs.microsoft.com/zh-cn/office/vba/api/excel.protection
(3)关于【选定锁定单元格】及【选定解除锁定的单元格】部分的值来源在此:
https://docs.microsoft.com/zh-cn/office/vba/api/excel.xlenableselection
--------------------------------------
为什么1和2能搭配着用,就不得而知了、。。
:face (9):
==========================
收藏,收藏
有价值,感谢分享 有价值, 感谢分享 看贴必须回复,。。。。!
页:
[1]