如何在受保护的工作表上断开指向VBA中值的链接?运行时错误'1004'

时间:2019-08-13 12:53:32

标签: excel vba

我试图在将多个工作表从一个工作簿复制到VBA中的另一个工作表时断开与值的链接。

我遇到运行时错误'1004':工作表受到保护,但是我无法取消保护这些工作表。

问题在运行错误的函数的.Value = .Value部分发生。我可以使用另一种方法吗?

我曾尝试wb.BreakLink链接功能,但这没有成功。

ActiveWorkbook.Worksheets(1).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

With ActiveSheet.UsedRange
    For Each smallrng In Range("G16:Q16,G40:Q69").Areas
        With smallrng
            .Value = .Value

我希望输出结果将删除所有公式,并在复制后仅显示指定范围内的值。

1 个答案:

答案 0 :(得分:0)

复制工作表也将复制保护模式。因此,如果您可以创建工作表而无需进行复制,则应该可以将值传输到新工作表中。

Option Explicit
Sub foo()
Dim newWS As Worksheet
Dim protectedWS As Worksheet
Dim smallRng As Range

Set protectedWS = Worksheets(1)
Set newWS = Worksheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))

protectedWS.Cells.Copy

With newWS
    .Range("A1").PasteSpecial xlPasteAll
    For Each smallRng In protectedWS.Range("G16:Q16,G40:Q69").Areas
        .Range(smallRng.Address).Value = smallRng.Value
    Next
End With
End Sub