Batch Macro Tweak for Graham Mayor

B

Bruce Bumbier

Hello, On June 9 you sent me a batch macro to remove the same password from
multiple Word documents. I typed it in Visual basic in Word but I need to
know where to insert the old password in the macro, i.e. after .Password = ""
or ?? I am not a programmer so this is all "Greek" to me.
 
G

Graham Mayor

If you copy and paste the macro from the message into into the vba editor,
the macro when run prompts for the open and edit passwords. You don't have
to edit the macro code. The passwords you enter are assigned to the
variables sPassword1 and sPassword2 and those passwords are used for all the
documents. I did not include error trapping for missing or different macros
which is why I said that it was intended to work with a set of files all
with the same macro. See http://www.gmayor.com/installing_macro.htm which
explains how to use and depoloy macro listings

Public Sub UnPasswordAll()

Dim FirstLoop As Boolean
Dim strFileName As String
Dim sPassword1 As String
Dim sPassword2 As String
Dim strPath As String
Dim oDoc As Document
Dim Response As Long
Dim fDialog As FileDialog

Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)

With fDialog
.Title = "Select folder and click OK"
.AllowMultiSelect = False
.InitialView = msoFileDialogViewList
If .Show <> -1 Then
MsgBox "Cancelled By User", , "Password"
Exit Sub
End If
strPath = fDialog.SelectedItems.Item(1)
If Right(strPath, 1) <> "\" Then strPath = strPath + "\"
End With

sPassword1 = InputBox("Enter Password to open Document")
sPassword2 = InputBox("Enter Password to edit Document")


On Error Resume Next
Documents.Close SaveChanges:=wdPromptToSaveChanges
FirstLoop = True

strFileName = Dir$(strPath & "*.doc")
While strFileName <> ""
Set oDoc = Documents.Open(strPath & strFileName, _
PasswordDocument:=sPassword1, _
WritePasswordDocument:=sPassword2)
If FirstLoop Then
With ActiveDocument
.Password = ""
.WritePassword = ""
End With
FirstLoop = False

Response = MsgBox("Do you want to process " & _
"the rest of the files in this folder", vbYesNo)
If Response = vbNo Then Exit Sub
Else
With ActiveDocument
.Password = ""
.WritePassword = ""
End With
End If
oDoc.Close SaveChanges:=wdSaveChanges
strFileName = Dir$()
Wend
End Sub


--
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor - Word MVP


<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
 
G

Graham Mayor

Steady! ;)

--
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor - Word MVP


<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
 
P

poi

Okay, now that I have steadied myself ;) I have a question about going further.

The documents are "read only", as the "read-only recommended" box is checked
in the security options of the documents. Is there a way to get rid of that
by macro? Did I do something wrong?
I am trying to change find/replace text in all of the documents but the
read-only is getting in the way.

thanks,
poi
 
G

Graham Mayor

I answered this to your similar question in the vba forum you posted to and
provided code. That reply is below:

The following should work. If you have already removed the password(s),
leave the password prompts blank

Sub BatchProcess()
Dim strFileName As String
Dim strPath As String
Dim sPassword1 As String
Dim sPassword2 As String
Dim oDoc As Document
Dim fDialog As FileDialog
Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
sPassword1 = InputBox("Enter Password to open Document")
sPassword2 = InputBox("Enter Password to edit Document")
With fDialog
.Title = "Select folder and click OK"
.AllowMultiSelect = False
.InitialView = msoFileDialogViewList
If .Show <> -1 Then
MsgBox "Cancelled By User", , _
"List Folder Contents"
Exit Sub
End If
strPath = fDialog.SelectedItems.Item(1)
If Right(strPath, 1) <> "\" _
Then strPath = strPath + "\"
End With

If Documents.Count > 0 Then
Documents.Close SaveChanges:=wdPromptToSaveChanges
End If
If Left(strPath, 1) = Chr(34) Then
strPath = Mid(strPath, 2, Len(strPath) - 2)
End If
strFileName = Dir$(strPath & "*.doc")

While Len(strFileName) <> 0
Set oDoc = Documents.Open(FileName:=strPath & strFileName, _
PasswordDocument:=sPassword1, _
WritePasswordDocument:=sPassword2)
'
'Do what you want with oDoc
With oDoc
.Password = ""
.WritePassword = ""
.ReadOnlyRecommended = False
.Close SaveChanges:=wdSaveChanges
End With
strFileName = Dir$()
Wend
End Sub


--
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor - Word MVP


<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top