Vba 将工作表中所有未受保护的单元格复制到另一个工作表并保持其位置

Vba 将工作表中所有未受保护的单元格复制到另一个工作表并保持其位置,vba,excel,Vba,Excel,工作簿A中的工作表1包含一些带有受保护公式的单元格,以及一些用于输入不受保护数据的单元格。有多个文件使用此结构 我现在更新了模板文件中使用相同结构的公式。 我要做的是复制所有未受保护的单元格,并将它们移动到新文件中的同一位置 假设范围是A1:R99,我在B1:B99和G1:G99中有未受保护的单元格(实际文件中有多个不同的位置,因此输入所有不同的范围需要很长时间),然后我想将B1:B99复制到新文件中的同一位置。 希望有一个更好的方法来做到这一点,而不是手动输入每个范围 假设您在“Sheet1”

工作簿A中的工作表1包含一些带有受保护公式的单元格,以及一些用于输入不受保护数据的单元格。有多个文件使用此结构

我现在更新了模板文件中使用相同结构的公式。 我要做的是复制所有未受保护的单元格,并将它们移动到新文件中的同一位置

假设范围是A1:R99,我在B1:B99和G1:G99中有未受保护的单元格(实际文件中有多个不同的位置,因此输入所有不同的范围需要很长时间),然后我想将B1:B99复制到新文件中的同一位置。
希望有一个更好的方法来做到这一点,而不是手动输入每个范围

假设您在“Sheet1”中有数据,如果您想将所有未受保护的单元格复制到新的工作表中,让我们假设“Sheet2”与“Sheet1”中的单元格位于同一位置,然后

Sub Foo()

If Sheets("Sheet1").ProtectContents = True Then

    Worksheets("Sheet1").Activate
    For i = 1 To 99
        For j = 1 To 18
            If Cells(i, j).Locked = False Then
                a = Cells(i, j).Value
                Worksheets("Sheet2").Activate
                Cells(i, j).Value = a
                Worksheets("Sheet1").Activate
            End If
        Next j
    Next i

End If

End Sub

到目前为止你试过什么?请提供您得到的代码。如果你没有,从小事做起,一步一步地做。访问不同的工作簿、在单元格上循环、检查单元格属性等。