2017-02-22 39 views
0
  • 我有.xlsb工作簿的文件夾。
  • 每個工作簿都有5張工作表,所有工作表都使用密碼保護。
  • 對於所有工作簿,所有工作表的密碼都是通用的。
  • 工作簿本身沒有密碼。

如何取消保護所有工作簿中的所有工作表並將其保存爲不受保護?解除對所有二進制工作簿中的所有圖紙文件夾中,並將其保存未受保護的

我發現下面的代碼,但它沒有做我所需要的(它只適用於活動工作簿)。

Sub unprotect_all_sheets() 
On Error Goto booboo 
unpass = InputBox("password") 
For Each Worksheet In ActiveWorkbook.Worksheets 
Worksheet.Unprotect Password:=unpass 
Next 
Exit Sub 
booboo: MsgBox "There is s problem - check your password, capslock, etc." 
End Sub 
+0

試試這個http://stackoverflow.com/questions/13996740/import-password報道-protected-xlsx-workbook-into-r –

+0

在R中,您可以使用'excel.link'中的'xl.read.file'來讀取受密碼保護的電子表格。 http://stackoverflow.com/questions/34233738/how-to-read-an-xls-file-that-is-encrypted-with-r –

+1

@Brad你的鏈接是關於保護,而不是UNprotecting。請撤銷重複標誌。 – user3507584

回答

0

事情是這樣的:

任何未能取消保護片在即時窗口

Sub LoopThroughFiles() 
    Dim StrFile As String 
    Dim Wb As Workbook 
    Dim ws As Worksheet 
    Dim strFol As String 
    Dim strPass As String 

    'password 
    strPass = "tested" 

    With Application 
     .ScreenUpdating = False 
     .EnableEvents = False 
     .DisplayAlerts = False 
    End With 

    'folder to work in 
    strFol = "c:\temp\" 

    StrFile = Dir(strFol & "*.xls*") 
    Do While Len(StrFile) > 0 
     Set Wb = Workbooks.Open(strFol & StrFile) 
      For Each ws In Wb.Worksheets 
      On Error Resume Next 
      ws.Unprotect strPass 
      If Err.Number <> 0 Then Debug.Print strFol & StrFile & " " & ws.Name 
      On Error GoTo 0 

     Next 
     Wb.Save 
     Wb.Close 
     StrFile = Dir 
    Loop 

    With Application 
     .ScreenUpdating = True 
     .EnableEvents = True 
     .DisplayAlerts = True 
    End With 
End Sub 
相關問題