< návrat zpět

MS Excel


Téma: Hromadné odemykání a zamykání rss

Zaslal/a 15.12.2014 11:22

Dobrý den všem,

mám excel, kde je asi 30 listů a při úpravách potřebuji jednou za čas většinu odemknout a pak zase zamknout. Po jednom je to dost otrava a ještě jich mám většinu skrytých. Od jednoho kolegy zde z fóra mám makro viz níže na hromadné odemknutí a zamknutí, bohužel má pak ale k makru přístup každý, protože se heslo musí vepsat přímo do kódu. Potřeboval bych kód upravit, aby mi při zamykání excel nabídl klasické okénko na zadání hesla s potvrzením (tedy 2x zadání). Při odemykání pak analogicky, tedy aby po mě chtěl zadání hesla. Mohu pak makro nechat v sešitu, ale nikdo kromě mě ho nepoužije pokud nebude znát heslo.

Děkuji za rady, nejlépe kód (programátor bohužel moc nejsem) :)


Sub Odemknout()
Dim sh As Object
ActiveWorkbook.Unprotect "Heslo"
For Each sh In ActiveWorkbook.Sheets
sh.Unprotect "Heslo"
Next
End Sub
----------
Sub Zamknout()
Dim sh As Object
ActiveWorkbook.Protect "Heslo"
For Each sh In ActiveWorkbook.Sheets
sh.Protect "Heslo"
Next
End Sub

Zaslat odpověď >

Strana:  1 2   další »
icon #022807
eLCHa
Asi bych doporučil jednoduchý formulář - 2 tlačítka + textbox
jednomu tlačítku přiřaďte Odemknout, druhému Zamknout

TextBox má vlastnost PasswordChar
Místo "Heslo" pak do procedur dáte textbox.text a při zadávání bude heslo skryté * (nebo čímkoli budete chtít)citovat
#022810
avatar
eLCHa: Díky moc za radu. Kompletní zamykání a odmykání už mi funguje. Chtěl bych ale ještě pro svou vlastní ochranu proti překlepu přidat dvojí zadání hesla při zamykání.

Nepřišel jsem na to, jak dvě zadané hodnoty porovnat a když:
- hesla jsou totožná -> makro běží dál
- hesla se neshodují -> chybová hláška a nic se nezamkne

Je mi jasné, že tam bude nějak IF ELSE, ale to porovnání hodnot a vyhodnocení mi nějak nejde 4

Níže posílám můj začátečnický kód. Příloha mi nejde vložit. Web mi nechce zobrazit kód pro ověření. Prosím o pomoc 1


Sub Zamknout1()
Dim sh As Object
heslo = InputBox("Zadej heslo", "ZÁMEK")
'heslo2 = InputBox("Zadej heslo pro ověření", "ZÁMEK")
'result = heslo Like heslo2
'If result Then
ActiveWorkbook.Protect Password:=heslo
'Else: MsgBox ("Hesla se neschodují!")
For Each sh In ActiveWorkbook.Sheets
sh.Protect Password:=heslo
Next
End Sub

Sub Odemknout1()
Dim sh As Object
heslo = InputBox("Zadej heslo", "ZÁMEK")
ActiveWorkbook.Unprotect Password:=heslo
For Each sh In ActiveWorkbook.Sheets
sh.Unprotect Password:=heslo
Next
Sheets("List1").Select
End Sub



děkujicitovat
icon #022811
eLCHa
Např.:Sub Zamknout1()
Dim sPass As String
sPass = InputBox("Zadej heslo", "ZÁMEK")

Dim sh As Worksheet
If sPass = InputBox("Zadej heslo pro ověření", "ZÁMEK") Then
For Each sh In ActiveWorkbook.Sheets
sh.Protect Password:=sPass
Next
Else
MsgBox ("Hesla se neschodují!")
End If
End Sub
citovat
icon #022814
avatar
@eLCHa:
sh.Protect Password:=heslo ? 1citovat
icon #022816
eLCHa
@AL
dík ;)citovat
#022820
avatar
a co tak to dat do jedneho cuplika .)

ked je list zamknuty bude sa cuplik volat odomknut inac sa bude volat zamknut..... + tie makra co su horecitovat
#041576
avatar
Zdravím,

vím, že je to staré téma, ale moc by mi pomohlo, kdyby mi někdo poradil jaký kód použít aby se mi v případě zadání špatného hesla při odemykaní nezobrazovala chyba 1004 ale pouze to řeklo "Špatné heslo".

Věděl by prosím někdo?

Děkujicitovat
#042911
Lugr
Dobrý den,

k odemykání používám vaše makro, bohužel není dodělané.
Když dám Storno makro dále pokračuje v zamykání/odemykání a v případě, že zadám špatně heslo při odemykání, tak to nehodí MsgBox, ale chybu. Mohli by jste mi pomoc?

Sub Zamknout()

Dim sPass As String
sPass = InputBox("Heslo k odemknutí listu:", "Zamknout list")
Dim sh As Worksheet

If sPass = InputBox("Zadejte heslo ještě jednou:", "Potvrdit heslo") Then
For Each sh In ActiveWorkbook.Sheets
sh.Protect Password:=sPass

Next
Else

i = MsgBox("Heslo zadané pro potvrzení není shodné.", vbOKOnly + vbExclamation)
End If

End Sub

Sub Odemknout()

Dim sPass As String
sPass = InputBox("Heslo:", "Odemknout list")
Dim sh As Worksheet

If sPass = False Then

For Each sh In ActiveWorkbook.Sheets
sh.Unprotect Password:=sPass
Next

' MsgBox("Zadané heslo není správné.", vbOKOnly + vbExclamation)

End Sub
citovat
#042912
Stalker
Sub Zamknout()

Dim sPass As String
sPass = InputBox("Heslo k odemknutí listu:", "Zamknout list")
Dim sh As Worksheet
If sPass = vbNullString Then Exit Sub

If sPass = InputBox("Zadejte heslo ještě jednou:", "Potvrdit heslo") Then
For Each sh In ActiveWorkbook.Sheets
sh.Protect Password:=sPass
Next
Else
i = MsgBox("Heslo zadané pro potvrzení není shodné.", vbExclamation, "Chyba")
End If

End Sub

Sub Odemknout()

Dim sPass As String
sPass = InputBox("Heslo:", "Odemknout list")
Dim sh As Worksheet

On Error Resume Next
For Each sh In ActiveWorkbook.Sheets
sh.Unprotect Password:=sPass
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, "Chybné heslo !!!"
Exit Sub
End If
Next
End Sub
citovat
#042916
Lugr
Super, děkuju.citovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje