【问题标题】:Using VBA macro to open, lock cells, then protect workbooks, but can still edit LOCKED, PROTECTED cells使用 VBA 宏打开、锁定单元格,然后保护工作簿,但仍然可以编辑 LOCKED、PROTECTED 单元格
【发布时间】:2016-08-14 00:25:08
【问题描述】:

我需要更新许多旧的 2003 .xls 文件以锁定和保护单元格块,以防止人们打开单元格并复制标题信息。这是一个一次性的过程,不幸的是,我不能阻止\限制对文件的访问。

在兼容模式下使用 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

感谢您的帮助!

【问题讨论】:

  • when I manually re-open the files I am still able to copy from the locked cells - 所以你的问题是,“我怎么做才能让锁定的单元格不能被复制?”
  • 是的,如何设置单元格,使其在重新打开文件时被锁定、受保护并且无法选择\复制。

标签: excel macros vba


【解决方案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

【讨论】:

  • 谢谢,我试试看。
猜你喜欢
  • 2019-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多