2016-04-21 23 views
0

我需要更新許多舊的2003 .xls文件來鎖定和保護一個單元塊以防止人們打開單元格和複製標題信息。這是一次性的過程,不幸的是,我不能阻止\限制對文件的訪問。使用VBA宏打開,鎖定單元格,然後保護工作簿,但仍然可以編輯LOCKED,PROTECTED單元格

在兼容模式下使用Excel 2010我拼湊了一個宏,用於打開文件,鎖定單元格,保護工作表,然後保存並關閉文件並移至下一個文件。但是,當我手動重新打開文件時,我仍然可以從鎖定的單元格中複製。工作表顯示爲受保護的,當我解鎖它們顯示爲鎖定的單元格時,它們顯示選中的鎖定單元格被檢查。有任何想法嗎?

Sub Lockdown() 

Dim wBk As Workbook 
Dim sFileSpec As String 
Dim sPathSpec As String 
Dim sFoundFile As String 

sPathSpec = "C:\Archive\PF\" 
sFileSpec = "*.xls" 

sFoundFile = Dir(sPathSpec & sFileSpec) 
Do While sFoundFile <> "" 
    Set wBk = Workbooks.Open(sPathSpec & sFoundFile) 
    With wBk 
     Application.DisplayAlerts = False 
     For Each ws In Worksheets 
      ws.Unprotect 'Some worksheets have protection without password 
      ws.Unprotect Password:="A1234" 'some worksheets have password protection 
      ws.Range("A1:I10").Locked = True 
      ws.Protect contents:=True 
      Next 
     Application.DisplayAlerts = True 
    End With 
    Set wBk = Nothing 
    Workbooks(sFoundFile).Close True 
    sFoundFile = Dir 
Loop 

End Sub 

感謝您的幫助!

+0

'當我手動重新打開文件時,我仍然可以從鎖定的單元格中複製 - 所以你的問題是,「我如何使它鎖定單元格不能被複制? – OldUgly

+0

是的,我應該如何設置單元格,使其被鎖定,受保護並且不能從文件重新打開時進行選擇\複製。 – erdiede

回答

1

下面是我放在一起的一個例子,它將阻止用戶僅選擇單元格A1,A2,B1和B2。但是,可以選擇所有其他單元格。

Set myWkbk = ActiveWorkbook 
Set mySht = myWkbk.Worksheets(1) 
With mySht 
    .Cells.Locked = False 
    .Range("A1:B2").Locked = True 
    .Protect contents:=True 
    .EnableSelection = xlUnlockedCells 
End With 
+0

謝謝,我會試試看。 – erdiede

+0

謝謝,它的工作。 – erdiede

相關問題