< návrat zpět
MS Excel
Téma: Odemknout list a zamknout
Zaslal/a Lugr 10.1.2019 9:39
Dobrý den,
pokusil jsem se o Makro, ale už si nevím rady.
Potřeboval bych při stisknutí tlačítka odemknout list a při druhém stisknutí list zamknout s dotazem na heslo.
Přílohu je asi zbytečné přikládat, ale zkopíruji Makro.
Děkuji za radu.
Sub Zamknout_Odemknout()
Dim sPass As String
sPass = InputBox("Heslo k odemknutí listu:", "Uzamknout
list")
Dim wsSheet As Worksheet
Set wsSheet = Worksheets("List1")
If sPass = InputBox("Zadejte heslo ještě jednou:",
"Potvrdit heslo") Then
For Each sh In ActiveWorkbook.Sheets
wsSheet.Protect Password:=sPass
Next
Else
MsgBox ("Zadané heslo není správné!")
End If
' zde si nevím rady
sPass = InputBox("Heslo:", "Odemknout list")
For Each sh In ActiveWorkbook.Sheets
wsSheet.Unprotect Password:=sPass
Next
End Sub
elninoslov(10.1.2019 15:27)#042379 A prečo chcete nahrádzať natívnu funkcionalitu Excelu (Revízia - Zabezpečiť hárok) ?
Píšete o
liste, ale v cykle zamykáte/odomykáte
všetky listy zošitu. Tak ako to je ?
citovat
Lugr(10.1.2019 15:32)#042380 Asi to mám blbě, snažil jsem se to splácat, co jsem kde našel abych nemusel otravovat někoho z vás, ale bohužel. Jde mi jen o jeden konkrétní list.
Ale kdyby jste mi ukázal obě varianty, byl by jste moc laskav.
Předem děkuji
citovat
elninoslov(10.1.2019 16:28)#042381 Zatiaľ len na 1 list. Na všetky listy v zošite, je potreba myslieť ešte na výpis listov, ktoré sa odomknúť nepodarilo (pže užívateľ v odomknutom stave mohol zmeniť heslo manuálne)... Neviem, či na to budem mať večer čas. Zatiaľ toto...
Sub Zamknout_Odemknout()
Dim sPass As String
With wsData
If .ProtectContents Then
sPass = InputBox("Heslo k odemknutí listu:", "Odemknout list")
If sPass = "" Then MsgBox "Nebylo zadáno žádné heslo." & vbNewLine & "List nebyl odemčen.", vbExclamation: Exit Sub
On Error Resume Next
.Unprotect Password:=sPass
If Err.Number <> 0 Then
MsgBox "Zadané heslo není správné!" & vbNewLine & "List nebyl odemčen.", vbCritical: Exit Sub
Else
.Shapes("btnLock").OLEFormat.Object.Caption = "Zamknout"
End If
On Error GoTo 0
Else
sPass = InputBox("Heslo k zamknutí listu:", "Zamknout list")
If sPass = "" Then MsgBox "Nebylo zadáno žádné heslo." & vbNewLine & "List nebyl zamčen.", vbExclamation: Exit Sub
If sPass <> InputBox("Zadejte heslo ještě jednou:", "Potvrdit heslo") Then
MsgBox "Zadaná hesla se neshodují!" & vbNewLine & "List nebyl zamčen.", vbCritical: Exit Sub
Else
.Shapes("btnLock").OLEFormat.Object.Caption = "Odemknout"
On Error Resume Next
.Protect Password:=sPass
If Err.Number <> 0 Then
MsgBox "Při zamykání listu nastala chyba!" & vbNewLine & "List nebyl odemčen.", vbCritical, "Chyba": Exit Sub
.Shapes("btnLock").OLEFormat.Object.Caption = "Zamknout"
End If
On Error GoTo 0
End If
End If
End With
End Subcitovat
Lugr(10.1.2019 16:31)#042383 Netušil jsem, že je to až tak moc složité. Mockrát děkuji za každou pomoc.
citovat