[求助]如何批量解除指定文件夹中的所有相同设置文档保护的文档
时间:2008-05-27
来源:互联网
Sub 批量对指定文件夹下的所有选取文档进行文档保护()
Dim Adoc As String, SetPsDoc As Document
On Error Resume Next
ChDrive "D"
ChDir "D:\Downolads"
Adoc = Dir("*.doc")
Application.ScreenUpdating = False
Do While Adoc <> ""
' MsgBox Adoc
Set SetPsDoc = Documents.Open(Adoc)
SetPsDoc.Protect Type:=wdAllowOnlyFormFields, Password:="tangqingfu"
SetPsDoc.Close True
Adoc = Dir()
Loop
Application.ScreenUpdating = True
End Sub
请教对上述批量对指定文件夹下的所有选取文档进行文档保护该如何批量解除?
作者: tangqingfu 发布时间: 2008-05-27
请清福兄测试一下,我未测试。
Option Explicit
Sub 批量解除文档保护()
Dim Adoc As String, SetPsDoc As Document
Dim myPassWord As String
On Error Resume Next
myPassWord = "tangqingfu"
ChDrive "D"
ChDir "D:\Downolads"
Adoc = Dir("*.doc")
Application.ScreenUpdating = False
Do While Adoc <> ""
' MsgBox Adoc
Set SetPsDoc = Documents.Open(FileName:=Adoc, Visible:=False)
With SetPsDoc
If .ProtectionType <> wdNoProtection Then .Unprotect myPassWord
.Close True
Adoc = Dir()
End With
Loop
Application.ScreenUpdating = True
End Sub
'----------------------
作者: 守柔 发布时间: 2008-05-27
To 守版:
在两台分别装Word 2002和Word 2003机子上测试“批量对指定文件夹下的所有选取文档进行文档保护”代码时,发现只能对部分所选文档进行文档保护。在测试时也发现“批量解除文档保护代码”出现这种情况(部分解除)。
不知其他网友测试结果如何?
提议:
能否将代码一楼和二楼的代码分别改为“批量对指定文件夹下的所选文档进行文档保护”、“指定文件夹下的所选文档保护的批量解除”,这样感觉更符合一般人的操作
即在运行代码时,弹出对话框,选择路径后,对该路径下的所选文档(部分或全部)进行文档保护或批量解除文档保护。
[此贴子已经被作者于2008-5-27 19:48:13编辑过]
作者: tangqingfu 发布时间: 2008-05-27
To 守版:
在两台分别装Word 2002和Word 2003机子上测试“批量对指定文件夹下的所有选取文档进行文档保护”代码时,发现只能对部分所选文档进行文档保护。在测试时也发现“批量解除文档保护代码”出现这种情况(部分解除)。
不知其他网友测试结果如何?
提议:
能否将代码一楼和二楼的代码分别改为“批量对指定文件夹下的所选文档进行文档保护”、“指定文件夹下的所选文档保护的批量解除”,这样感觉更符合一般人的操作
即在运行代码时,弹出对话框,选择路径后,对该路径下的所选文档(部分或全部)进行文档保护或批量解除文档保护。
由于使用DIR函数遍历文件夹并打开文件时,文件夹中的项目将产生变化(WORD每打开一个文件,会有临时文件/副本产生),可能会影响文件集合。
请使用FILEDIALOG对象。
如下:
'* +++++++++++++++++++++++++++++
'* Created By SHOUROU@ExcelHome 2008-5-28 6:54:51
'仅测试于System: Windows NT Word: 11.0 Language: 2052
'№ 0410^The Code CopyIn [ThisDocument-ThisDocument]^'
'* -----------------------------
Option Explicit
Sub SAMPLE()
Dim myDialog As FileDialog
Dim oFile As Variant
Dim oDoc As Document
Dim myResult As VbMsgBoxResult
Dim myPassWord As String
On Error Resume Next
myPassWord = "tangqingfu"
'定义一个文件夹选取对话框
Set myDialog = Application.FileDialog(msoFileDialogFilePicker)
With myDialog
.Filters.Clear '清除所有文件筛选器中的项目
.Filters.Add "所有 WORD 文件", "*.doc", 1 '增加筛选器的项目为所有WORD文件
.AllowMultiSelect = True '允许多项选择
If .Show <> -1 Then Exit Sub
myResult = MsgBox("选择是将进行对所选文件的设置文档保护,选择否将解除文档保护!", vbYesNo)
For Each oFile In .SelectedItems '在所有选取项目中循环
Set oDoc = Documents.Open(FileName:=oFile, Visible:=False)
With oDoc
If myResult = vbYes Then '如果选择了进行文档保护
'如果该文档未经过保护则使用保护窗体(文档)功能
If .ProtectionType = wdNoProtection Then .Protect Type:=wdAllowOnlyComments, Password:=myPassWord
Else '如果选择了取消文档保护
'如果文档已使用了保护文档的功能,则解除文档保护
If .ProtectionType <> wdNoProtection Then .Unprotect myPassWord
End If
.Close True
End With
Next
End With
End Sub
'----------------------
作者: 守柔 发布时间: 2008-05-28
测试成功!
谢谢守版的代码!将批量设置指定文件夹下的所选文档保护和批量解除指定文件夹下的所选文档保护合一为一,代码精妙,更体现了人类化的特点!收藏学习中……
作者: tangqingfu 发布时间: 2008-05-28
作者: szqhb 发布时间: 2009-11-25
引用:
原帖由 守柔 于 2008-5-28 06:57 发表QUOTE:以下是引用tangqingfu在2008-5-27 19:37:48的发言:To 守版:在两台分别装Word 2002和Word 2003机子上测试“批量对指定文件夹下的所有选取文档进行文档保护”代码时,发现只能对部分所选文档进行文档保护。在测 ...
'如果该文档未经过保护则使用保护窗体(文档)功能
If .ProtectionType = wdNoProtection Then .Protect Type:=wdAllowOnlyFormFields, Password:=myPassWord
需要修改下
作者: 秋日的枫叶 发布时间: 2010-11-25
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28