marczellm
marczellm

Reputation: 1336

Word document mysteriously write protected?

I am trying to do a find and replace operation on several Word documents in a folder. I wrote the following VBScript to do that:

Option Explicit
Dim Word, Document, FolderPath, FileSystem, FileList, File, Doc, InfoString
Const ReadOnly = 1
Const wdFindContinue = 1
Const wdReplaceAll = 2
Const wdOriginalDocumentFormat = 1

Set FileSystem = CreateObject("Scripting.FileSystemObject")
FolderPath     = FileSystem.GetAbsolutePathName(".")
Set FileList   = FileSystem.GetFolder(FolderPath).files
Set Word       = CreateObject("Word.Application")
Word.Visible   = False
Word.DisplayAlerts = False

For Each File in FileList
    If LCase(Right(File.Name,3)) = "doc" Or LCase(Right(File.Name,4)) = "docx" Then
        If File.Attributes And ReadOnly Then
            File.Attributes = File.Attributes - ReadOnly
        End If
        Set Doc  = Word.Documents.Open(File.Path,,True)
        ' find and replace stuff
    End If
Next

Word.Documents.Save True, wdOriginalDocumentFormat
Word.Quit
MsgBox("Done")

Problem is, when it reaches the line Word.Documents.Save, a Save As dialog box always pops up. If I click Cancel, I get an error from Windows Script Host saying the file is write protected, even though it is not shown as write protected if I open the Properties dialog in File Explorer. If I click save, I am prompted to save all the other files too. What is the problem here?

I have a suspicion that it is caused by the Word documents being very old, like from the 1990s.

Upvotes: 0

Views: 687

Answers (1)

Serenity
Serenity

Reputation: 73

Set Doc = Word.Documents.Open(File.Path,,True)

and look at the docs from Object Browser.

Function Open(FileName, [ConfirmConversions], [ReadOnly], [AddToRecentFiles], [PasswordDocument], [PasswordTemplate], [Revert], [WritePasswordDocument], [WritePasswordTemplate], [Format], [Encoding], [Visible], [OpenAndRepair], [DocumentDirection], [NoEncodingDialog]) As Document
Member of Word.Documents

So the True says to open Read Only. This is Word's read only, nothing to do with the file.

Upvotes: 1

Related Questions