2014-02-04 4 views
-1

Мне нужно защитить паролем всю книгу для открытия. Нет необходимости защищать листы, поскольку пользователь будет делать некоторые изменения после создания отчетов. Код работает в MS Access. Версия Office - 2003. Нет возможности использовать метод защиты паролем «SAVE AS» из-за определенных ограничений.Пароль Защитите книгу Excel от MS Access

Не могли бы вы указать, что я делаю неправильно здесь?

Вот что я пытался до сих пор:

Sub testProtection() 
Dim xl As New Excel.Application 
Dim wkbook As Workbook 
Dim fileToOpen As String 

    On Error GoTo ExitMe 
    fileToOpen = "filepath & name" 
    Set wkbook = xl.Workbooks.Open(fileToOpen) 

ошибки в следующих строках: Объект Ошибки автоматизации вызывается имеет отключение от своего клиента

wkbook.Protect Password:="100", Structure:=True, Windows:=True 
    wkbook.Close savechanges:=True 

ExitMe: 

    MsgBox err.Description 

    Set xl = Nothing 
    Set wkbook = Nothing 
    Call cleanAllXLInstances 
End Sub 

PS: Это стимул, если обходной путь могут быть совместимы с MS 2010, поскольку инструменты будут перенесены в будущем, но не обязательно на данный момент. Плюс я мог бы управлять им, когда смотрю на API позже, если текущий код может быть разработан.

+0

У вас есть выходное устройство перед «ExitMe' yea? – cjb110

+0

Что мешает вам защитить паролем книгу, прежде чем открыть ее? – Juliusz

+0

@ cjb110 ?? Exit Sub ??? – aspiring

ответ

0

Все, что мне нужно, чтобы убедиться, что на данный момент Display Alerts = False для подавления предупреждений для сохранения как файла с тем же именем в том же месте. Что противоречит первоначальным ограничениям заданного вопроса, хотя ...

 If xlPwd <> 0 Then 
      wkBook.SaveAs fileName:=fileToSaveAs, Password:=xlPwd, CreateBackup:=False 
      wkBook.Close 
      strMssg = " : Report is Protected!" 
     Else 
      strErrMssg = " : Report is NOT Protected!" 
      isWrapped = False 
      GoTo ExitMe 
     End If 
Смежные вопросы