Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 保护其他工作簿时未应用密码_Excel_Vba - Fatal编程技术网

Excel 保护其他工作簿时未应用密码

Excel 保护其他工作簿时未应用密码,excel,vba,Excel,Vba,这个代码是一个按钮,它应该保护其他工作簿的所有工作表,它可以工作,但它不能用密码保护它们,我不知道为什么。它检测通过,但由于某种原因,它无法保护它。正如您在图像上看到的,它检测到密码,但不应用它 Private Sub CommandButton3_Click() Dim wb As Excel.Workbook Application.ScreenUpdating = False Pass = Sheets("Pass").Range("C5").Value If Sheets("Pa

这个代码是一个按钮,它应该保护其他工作簿的所有工作表,它可以工作,但它不能用密码保护它们,我不知道为什么。它检测
通过
,但由于某种原因,它无法保护它。正如您在图像上看到的,它检测到密码,但不应用它

Private Sub CommandButton3_Click()
Dim wb As Excel.Workbook
Application.ScreenUpdating = False
Pass = Sheets("Pass").Range("C5").Value
    If Sheets("Pass").Range("C5").Value <> "" Then
        Set wb = Workbooks.Open("G:\SnP\L-3\Nómina\Nómina 1° Turno.xlsm")
        With wb
            For i = 1 To Sheets.Count
            Sheets(i).Protect Password:=Pass, DrawingObjects:=True, Contents:=True, Scenarios:=True
            Next i
            Listop = MsgBox("Listo")
            Application.ScreenUpdating = True
            'wb.Close Savechanges:=True
        End With
        Exit Sub
    Else
        Err = MsgBox("Agregar Nueva o Vieja contraseña")
    End If
End Sub

我怀疑你的“带wb”部分的范围不正确


请在该部分中有工作表的地方尝试使用.Sheets,以澄清这些工作表属于哪个工作簿。

对我很有用。Password:=Pass应该是Password:=“Pass”,但这只会导致我这边出现不保护的问题。Pass是工作表上的一个值,这就是为什么
Pass=Sheets(“Pass”)。范围(“C5”)。value
我刚刚尝试验证
Sheets(i)。保护密码:=“Pass”
不起作用。这是一个范围问题,我将在回答中给出更详细的信息当您运行“保护”代码时工作簿是否总是关闭?必须关闭,因为
工作簿。打开
打开它并重写它。“Nómina 1°Turno.xlsm”工作簿中的所有工作表都受到保护,但没有密码。好的,这解决了第一个问题。当用字符串替换命名区域时,它是否有效?哦,我没有更改任何内容,它一直都是这样工作的,并且没有:(字符串的
暗淡过程
不起作用。然后我被卡住了。在我的pc上使用相同的代码可以正常工作,唯一的更改是文件路径和工作表->工作表
Private Sub CommandButton4_Click()
Dim wb As Excel.Workbook
Application.ScreenUpdating = False
Pass = Sheets("Pass").Range("C5").Value
    If Sheets("Pass").Range("C5").Value <> "" Then
        Set wb = Workbooks.Open("G:\SnP\L-3\Nómina\Nómina 1° Turno.xlsm")
        With wb
            For i = 1 To Sheets.Count
            Sheets(i).Unprotect Pass
            Next i
            Listop = MsgBox("Listo")
            Application.ScreenUpdating = True
        End With
        Exit Sub
    Else
        Err = MsgBox("Agregar Nueva o Vieja contraseña")
    End If
End Sub