< návrat zpět

MS Excel


Téma: zamknutie zosita makro rss

Zaslal/a 1.8.2024 20:25

Potreboval by pomoct zo zamknutym zosita cez makro na heslo bud cely zosit alebo len urcity hárok. Hárkov je 6 a po uzamknuty zosita chcem povolit vzorce a makra s povolenim editacie v tychto bunkach.
Hárok1:H5,H7,E13:64,E76:G128,G13:G64,G76:G128,D132,D134,D136,D138
Hárok2: D2
Hárok5: E1,F1,E53:E56, H53:H56 .

Skusal som aj klasicke zamykanie ale po odmknuty mi nejde zamknut spat ako to bolo.

Zaslat odpověď >

#056736
€Ł мσşqμΐτσ
ahoj zkus tohle:

Option Explicit
Dim heslo As String

Sub NastavitHeslo()
heslo = "tvojeHeslo"
End Sub

Sub ZamknutZosit()
Call NastavitHeslo
Dim ws As Worksheet

' Zamknutie konkrétnych hárkov
Set ws = ThisWorkbook.Sheets("Hárok1")
ws.Unprotect Password:=heslo
ws.Cells.Locked = True
ws.Range("H5,H7,E13:E64,E76:G128,G13:G64,G76:G128,D132,D134,D136,D138").Locked = False
ws.Protect Password:=heslo, AllowUsingPivotTables:=True, AllowSorting:=True, AllowFiltering:=True, AllowFormattingCells:=True
ws.EnableSelection = xlUnlockedCells

Set ws = ThisWorkbook.Sheets("Hárok2")
ws.Unprotect Password:=heslo
ws.Cells.Locked = True
ws.Range("D2").Locked = False
ws.Protect Password:=heslo, AllowUsingPivotTables:=True, AllowSorting:=True, AllowFiltering:=True, AllowFormattingCells:=True
ws.EnableSelection = xlUnlockedCells

Set ws = ThisWorkbook.Sheets("Hárok5")
ws.Unprotect Password:=heslo
ws.Cells.Locked = True
ws.Range("E1,F1,E53:E56,H53:H56").Locked = False
ws.Protect Password:=heslo, AllowUsingPivotTables:=True, AllowSorting:=True, AllowFiltering:=True, AllowFormattingCells:=True
ws.EnableSelection = xlUnlockedCells

' Zamknutie celého zošita
ThisWorkbook.Protect Password:=heslo, Structure:=True, Windows:=False

MsgBox "Zošit a hárky boli úspešne zamknuté."
End Sub

Sub OdomknutZosit()
Call NastavitHeslo
Dim ws As Worksheet

' Odomknutie konkrétnych hárkov
Set ws = ThisWorkbook.Sheets("Hárok1")
ws.Unprotect Password:=heslo
ws.Range("H5,H7,E13:E64,E76:G128,G13:G64,G76:G128,D132,D134,D136,D138").Locked = True

Set ws = ThisWorkbook.Sheets("Hárok2")
ws.Unprotect Password:=heslo
ws.Range("D2").Locked = True

Set ws = ThisWorkbook.Sheets("Hárok5")
ws.Unprotect Password:=heslo
ws.Range("E1,F1,E53:E56,H53:H56").Locked = True

' Odomknutie celého zošita
ThisWorkbook.Unprotect Password:=heslo

MsgBox "Zošit a hárky boli úspešne odomknuté."
End Sub
citovat
#056738
avatar
Dakujem makro som skopiroval a dam spustit makro tak dostanem chybovu hlasku 1004: Nieje mozne nastavit vlastnost Locked triedy Range

a zobrazi mi chybu tohto riadka :ws.Range("H5,H7,E13:E64,E76:G128,G13:G64,G76:G128,D132,D134,D136,D138").Locked = False

Ale ked to skusim len v cistom zosite tak mi to funguje ale ked to vlozim do mojho kde su uz rozne vzorce atd tak uz dostavam uvedene chyby.citovat
#056740
€Ł мσşqμΐτσ
ahoj,
vyzkoušej tohle (viz příloha). Udělal jsem tam pár změn.

Pokud by to stále nefungovalo musel bych vidět ten sešit.

*rozbal a naimportuj modul "oprava" do svého sešitu.
Příloha: zip56740_oprava.zip (2kB, staženo 3x)
citovat
#056742
avatar
Dakujem uz to funguje spravne len po uzamknuty mi nechce spustit makra a nezamkne mi ostatne harky ktore nepotrebujem editovat.citovat
#056745
€Ł мσşqμΐτσ
Ahoj,
vlož modul "Zamok" z přílohy, a starý modul "Oprava" smaž.
Omlouvám se za tak podrobný popis nevím jaké máš znalosti VBA, proto raději to rozepisuji víc.

1.Upravil jsem makro, ale původně nebylo řečeno, že je tam víc listů (hárků). Teď ale by mělo zamykat všechny listy

2. Přidal jsem kontextové menu pro volání makra ZamknutBunky nebo odemknutBunky to znamená že při kliknutím pravým tlačítkem myši, se na spodku lišty ukáže rozevírací menu s názvem "Zámok Hárkov" pro správnou funkčnost je potřeba přidat příkaz do "ThisWorbook" ve VBA editoru , uložit a restartovat Excel.Private Sub Workbook_Open()
Call PridejKontextMenu
End Sub

3. Na to, aby se ti spouštěli jiné makra pro zápis do buněk, budeš muset v každém makru zavolat na začátku příkaz "Call OdomknutZosit" a na konec zase příkaz "Call ZamknutZosit".
Příklad je uvedený v modulu (poslední makro)

4. Přidal jsem InputBox pro zadávání hesla při odemykání momentálně je heslo nastavené na 1111 ,takže při manuálním odemykání buněk budeš vyzván k zadání hesla, při ostatních volaní maker, heslo žádat nebude, stejně nebude vyskakovat msgbox o zamknuti nebo odemknuti.
Příloha: zip56745_zamok.zip (2kB, staženo 2x)
citovat
#056746
avatar
Ďakujem skúsim to otestovať. Ospravedlňujem sa len som v popise som to zrejme zle napísal. V exceli viem v pohode pracovať s makrami tak není problém až na to programovanie makier to uz je na mňa iný level pri ľahších veciach si viem poradiť vo VBA editorecitovat

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