2017-10-17 18 views
0

J'ai plusieurs documents Word qui nécessitent des restrictions en mode Développeur.Déprotection de plusieurs documents Word à l'intérieur d'un dossier à l'aide de VBA

je lance le script en utilisant wscript passer un dossier comme argument, mais il affres une erreur

Dim strFolder 
Const xlTypePDF = 0 
strFolder = WScript.Arguments(0) 

if Wscript.Arguments.Count > 0 Then 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objWord = CreateObject("Word.Application") 
    Set objFolder = objFSO.GetFolder(strFolder) 

    For Each Fil In objFolder.Files 
     Set objFile = objFSO.GetFile(Fil) 

     Set objDoc = objWord.Documents.Open(Fil,,TRUE) 
     dirPath = objFSO.GetParentFolderName(objFile) 
     fileBaseName = objFSO.GetBaseName(objFile) 

'objWord.ActiveDocument.Unprotect Password:="pwd" 

     objWord.ActiveDocument.Close(False) 
    Next 

    objWord.Quit 
Else 
    Msgbox("Run usning cmd") 
End If 
+0

Quelle erreur lance-t-elle et sur quelle ligne? –

+0

https://stackoverflow.com/questions/42194300/does-vbscript-allow-named-arguments-in-function-calls –

+0

Quel est le texte de l'erreur? –

Répondre

1
Sub UnprotectDocsInFolder() 
Dim docfile As Document 
Dim docpath As String 
Dim docfilename As String 
Dim pwd As String 

    'Path for the documents 
    docpath = "C:\ProtectedDocs\" 
    'Password 
    pwd = "myPass" 

    docfilename = Dir(docpath & "*.doc") 

    Do Until docfilename = "" 
     Set docfile = Documents.Open(docpath & docfilename) 
     docfile.Unprotect pwd 
     docfile.Close True 
     docfilename = Dir() 
    Loop 
End Sub 

Vous pouvez utiliser un code similaire pour protéger les fichiers de la même manière.

Sub ProtectDocsInFolder() 
Dim docfile As Document 
Dim docpath As String 
Dim docfilename As String 
Dim pwd As String 

    'Path for the documents 
    docpath = "C:\UnProtectedDocs\" 
    'Password 
    pwd = "myPass" 

    docfilename = Dir(docpath & "*.doc") 

    Do Until docfilename = "" 
     Set docfile = Documents.Open(docpath & docfilename) 
     docfile.Protect wdAllowOnlyFormFields, , pwd 
     docfile.Close True 
     docfilename = Dir() 
    Loop 
End Sub