I am trying to create a function that would check if docx or pptx files are password protected. Here is my function:
Public Function isPasswordProtected(ByVal path As String) As Boolean
On Error GoTo ErrorHandler
Dim wordApp As Word.Application
Dim wordFile As Object
Set wordApp = New Word.Application
wordApp.Visible = False
Set wordFile = Documents.Open(fileName:=path, PasswordDocument:="!@#$%")
If Err = 0 Then ' no error occurred
isPasswordProtected = False
Else
isPasswordProtected = True
End If
wordFile.Close (False)
wordApp.Quit
Set wordApp = Nothing
Set wordFile = Nothing
isPasswordProtected = True
ErrorHandler:
Debug.Print "isPasswordProtected( ):" & Err.Description
End Function
Sub TestProtection()
Dim protected As String
Dim unrpotected As String
protected = "C:\Temp\word\protected.docx"
Debug.Print isPasswordProtected(protected)
unrpotected = "C:\Temp\word\unprotected.docx"
Debug.Print isPasswordProtected(unrpotected)
End Sub
I does work but not reliably from time to time it just throws the following error: isPasswordProtected():The remote server machine does not exist or is unavailable
Rather than:
isPasswordProtected( ):The password is incorrect. Word cannot open the document.
(C:\Temp\word\protected.docx)
False
isPasswordProtected( ):
True
And when I am checking lots of documents its a problem. Are there any alternative ways of doing that?