» Poradna » Programy

VBA Excel přístup k listu na základě hesla

 |   |  Microsoft Windows 10 Chrome 100.0.4896.127

Zdravím, potřebuji poradit s VBA. Požadavek je takový- v rámci jednoho sešitu mám různé listy (pobočky), potřebuji, aby se zaměstnanci dostali pouze ke svému listu a ostatní byly skryté ale základě hesla. Heslo funguje, ale mám viditelné všechny listy. Jediný list s informacemi, který měl být viditelný mi zmizel úplně. Čerpáno zde https://www.zive.cz/poradna/ms-excel-2007---z... Makro zde:Option ExplicitOption Compare BinaryPrivate Sub Workbook_Open()Dim List As Worksheet, Sesit As WorkbookDim Heslo As String, c As Range, Sloupec As RangeSet Sesit = ActiveWorkbookFor Each List In Sesit.WorksheetsIf List.Name = "Informace" Then List.Visible = xlSheetVeryHiddenNext ListHeslo = Application.InputBox("Zadej sve heslo pro pristup.", , , , , , , 2)Set List = ActiveWorkbook.Worksheets("Hesla")Set c = List.Range("2:2").Cells(Range("2:2").Columns.Count)If IsEmpty(c) Then Set c = c.End(xlToLeft)Set c = List.Range("a2").Resize(1, c.Column)Set c = c.Find(Heslo, LookIn:=xlValues, lookat:=xlWhole)If c Is Nothing ThenMsgBox "Nekorektni heslo, pristup odmitnut"Sesit.SaveSesit.CloseEndElseSet Sloupec = List.Range("a:a").Offset(0, c.Column - 1)If Sloupec.Address(0, 0) = "A:A" ThenFor Each List In Sesit.WorksheetsIf List.Name = "Informace" Then List.Visible = TrueNext ListElseWorksheets(c.Offset(-1, 0).Value).Visible = TrueWorksheets(c.Offset(-1, 0).Value).SelectEnd IfSet c = Ukázat celý příspěvek

Mohlo by vás také zajímat

Odpovědi na otázku

 |   |  Microsoft Windows 10 Chrome 100.0.4896.127

Skús použiť iný prístup (teda za predpokladu, že sa ľudia prihlasujú v sieti):Private Sub Workbook_Open()uNam = Environ("Username")If uNam = "yyy" Then Sheets("Sheet1").Visible = TrueIf uNam = "abc" Then Sheets("Sheet2").Visible = TrueEnd SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean)Sheets("Sheet1").Visible = xlVeryHiddenSheets("Sheet2").Visible = xlVeryHiddenEnd Sub

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 100.0.4896.127

Díky, vyzkoušela jsem. Jediné co potřebuji je, aby jim při otevření sešitu vyskočila tabulka, kam budou heslo zadávat. Po otevření se mi nic neukázalo a nevidím ani listy- jak tedy zadám heslo, aby se mi listy zobrazily?Tabulka bude ve sdílené složce na OneDrive.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 99.0.4844.84

Toto nie je prístup na základe, ale užívateľa. Tzn., že keď je napr. v systéme prihlásený užívateľ "yyy", tak sa mu automaticky zobrazí len list "Sheet1"

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 99.0.4844.84

sorry "...prístup na základe hesla..."

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 91.0

Chybu bych viděl v této částirovnítko nahradit za znaky větší menšíFor Each List In Sesit.WorksheetsIf List.Name <> "Informace" Then List.Visible = xlSheetVeryHiddenNext List

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 100.0.4896.127

Neprochází, hlásí chybu "Application-defined or object-defined error" Run-time error '1004'.Bez znaku před (= nebo <>) taky neprojde.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Android Chrome 99.0

V tom Tvém kódu to máš napsané tak, že skryje pouze list "Informace".
Pokud to napíšu se znaky kód skryje všechny listy mimo list "Informace".

Zkoušel sem to u sebe a není problém. Máš ve svém souboru list Informace? Pokud ne, dojde k chybě, protože kód bude chtít skrýt všechny listy, ale jeden musí být v souboru vždy viditelný.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 99.0

přístup k celému workbooku a jednotlivým sheetum přes heslo :https://support.microsoft.com/en-us/office/require-a-pa... https://techcommunity.microsoft.com/t5/excel/password-protect... https://excel.tips.net/T001952_Protecting_Indivi... na internetu je spousta příkladů stačí do googlu zadat hesloms excel password protect individual sheets

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Chrome 100.0.4896.88

Na zadání hesla to bude chtít jinou cestu a to Userform s políčkem na heslo a tl přihlášení a odhlášení.V sešitu se umístí na jediný trvale viditelný list např "info", nutno vyřešit při odhlašování.Další list bude obsahovat seznam uživatelů hesla a přístupné listy - zde je více variant:- 1 uživatel zvláštní heslo pro každý jemu přístupný list- 1 uživatel 1 heslo 1 nebo více listů více listů opět různě od seznamu v 1 bunce názvy listů oddělené nějakým znakem, více buněk vedle sebe až po křížovou tabulku s názvy listů ve sloupcích a označení např "x" v buňce kde se setkává uživatel a list- 1 list 1 heslo pro všechny uživatele

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 100.0.4896.127

Všem díky, podařilo se mi zkombinovat zápisy a vše funguje

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Chrome 100.0.4896.88

Nezapomeň si pak také udělat ochranu přístupu k VBA.

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Zaměstnanci, List, Then, Sloupec, Visible, Offset, Next, Private, COUNT, Option, Cancel