Excel - odemknutí všech listů pomocí makra

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Zamčeno
Majk1976
nováček
Příspěvky: 22
Registrován: 23 zář 2013 10:21

Excel - odemknutí všech listů pomocí makra

Příspěvek od Majk1976 »

Ahoj potřeboval bych poradit. mám objednávky na jednotlivých listech a v jednom sloupci je automatický filtr. Potřeboval bych makro které po spuštění odemkne všechny listy s heslem , pak fitr nastaví na VŠe a znovu listy zamkne pod heslem.
Jsem úplný začátečník ohledně makra.

Díky
Uživatelský avatar
Poki
Level 2
Level 2
Příspěvky: 237
Registrován: 09 pro 2009 17:01

Re: Excel - odemknutí všech listů pomocí makra

Příspěvek od Poki »

Zkuste tento kod, nijak zvlast jsem to netestoval:

Kód: Vybrat vše

Sub VSEfiltr()
  Dim PASSWORD As String
  PASSWORD = "Heslo"

 For Each List In Worksheets
   List.Unprotect PASSWORD
     If List.FilterMode Then
         List.ShowAllData
     End If
   List.Protect PASSWORD
 Next List
End Sub
Majk1976
nováček
Příspěvky: 22
Registrován: 23 zář 2013 10:21

Re: Excel - odemknutí všech listů pomocí makra

Příspěvek od Majk1976 »

Děkuji za makro, funguje dobře. Jen mám problém stím že když automaticky uzamkne list , zamkne tím i filtr ve sloupci. Mohu ještě poprosit o radu? A taky jsem se zapoměl zeptat jestli funguje makro ve sdíleném sešitě-?
Uživatelský avatar
Poki
Level 2
Level 2
Příspěvky: 237
Registrován: 09 pro 2009 17:01

Re: Excel - odemknutí všech listů pomocí makra

Příspěvek od Poki »

aha, zkuste k tomu radku

Kód: Vybrat vše

List.Protect PASSWORD
přidat ještě A

Kód: Vybrat vše

llowFiltering:=True

Kód: Vybrat vše

Sub VSEfiltr()
  Dim PASSWORD As String
  PASSWORD = "Heslo"

 For Each List In Worksheets
   List.Unprotect PASSWORD
     If List.FilterMode Then
         List.ShowAllData
     End If
   List.Protect PASSWORD, AllowFiltering:=True
 Next List
End Sub
lubo.
Level 2
Level 2
Příspěvky: 196
Registrován: 27 čer 2013 23:26

Re: Excel - odemknutí všech listů pomocí makra

Příspěvek od lubo. »

Použij před svým kódem

Kód: Vybrat vše

For Each List In ActiveWorkbook.Worksheets
   List.Protect Password:="Platné heslo", UserInterfaceOnly:=True
Next


Makro poběží, ochrana před uživatelem zůstává. Nastavení platí do zavření sešitu.
Majk1976
nováček
Příspěvky: 22
Registrován: 23 zář 2013 10:21

Re: Excel - odemknutí všech listů pomocí makra

Příspěvek od Majk1976 »

Tak jsem to zapsal takto
Sub VSEfiltr()
For Each List In ActiveWorkbook.Worksheets
List.Protect PASSWORD:="heslo", UserInterfaceOnly:=True
Next
Dim PASSWORD As String
PASSWORD = "heslo"

For Each List In Worksheets
List.Unprotect PASSWORD
If List.FilterMode Then
List.ShowAllData
End If
List.Protect PASSWORD, AllowFiltering:=True
Next List
End Sub

Makro funguje , ale jak dám sdílení tak hned hlásí chybu :Run-time error '1004' Application-defined or object - defined error
Uživatelský avatar
Poki
Level 2
Level 2
Příspěvky: 237
Registrován: 09 pro 2009 17:01

Re: Excel - odemknutí všech listů pomocí makra

Příspěvek od Poki »

No, tak postup vaseho kodu je nyni nasledujici:

1) projde vsechny listy a zamkne je pod heslem (s moznosti filtrovat)
2)projde vsechny listy a pokazde list
    a) odemkne
    b) zobrazi vsechny hodnoty
    c) uzamkne s moznosti filtrovat

Rekl bych, ze krok 1) je zde uplne zbytecne (a navic neresi zobrazeni dat)

Nicmene tyhle problemy vyblednou s tim, ze potrebujete sdileny sesit (coz je pro me osobne moznost Excelu, ktera je sice hezka, ale temer nepouzitelna, protoze sdilene sesity velmi casto "znici sami sebe" - stanou se necitelnymi)

Pokud bych mohl radit a vy opravdu potrebujete databazi s moznosti pristupu pro vice uzivatelu - vyuzijte nejakou databazi - ne Excel.
lubo.
Level 2
Level 2
Příspěvky: 196
Registrován: 27 čer 2013 23:26

Re: Excel - odemknutí všech listů pomocí makra

Příspěvek od lubo. »

Pomotal jsi to. Mrkni příležitostně do nápovědy, co dělá a jak se používá volba UserInterfaceOnly.

Kód: Vybrat vše

Sub VSEfiltr()
Dim PASSWORD As String
Dim bSdileno as Boolean
PASSWORD = "heslo"

   With ActiveWorkbook
      bSdileno = .MultiUserEditing  ' Zapamatovat stav pro případnou obnovu
      If .MultiUserEditing Then      ' Pokud je sešit sdílen, tak něco
         MsgBox "Sesit je sdílen. Nic nedělám"
         Exit Sub                           ' Nedělat nic, možná s hlášením.
                                                ' Asi nejlepší volba, korektní práce se sdílenými soubory je docela opruz,
                                                ' zejména s předvedenými znalostmi.
        ' .ExclusiveAccess              ' nebo ukončit sdílení pokud chceš a můžeš
   End If

   For Each List In ActiveWorkbook.Worksheets
      With List
          .Protect Password:=PASSWORD, UserInterfaceOnly:=True
          If .FilterMode Then   List.ShowAllData
      End With
   Next

   If bSdileno then                            ' To uložení je jen příklad, pořeš jak chceš
      ActiveWorkbook.SaveAs  ..... AccessMode:=xlShared
   End If
End Sub
Majk1976
nováček
Příspěvky: 22
Registrován: 23 zář 2013 10:21

Re: Excel - odemknutí všech listů pomocí makra

Příspěvek od Majk1976 »

Díky vám za pomoc. Bohužel sdílení musí být jelikož pracuje 10 lidí najednou. Access mě také napadl , ale zatím jsme nezkoušel. Bohužel asi budu muset někde ustoupit , jelikož jak vidím tak pracovat ve sdíleném se zamykáním asi nejde. I tak díky za váš čas
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Přechod z Excel 21 na Excel 24
    od Snekment » » v Kancelářské balíky
    2 Odpovědi
    14276 Zobrazení
    Poslední příspěvek od Snekment
  • Nic se nenačítá ani po resetu biosu pomocí cmos baterie
    od Bliske » » v Problémy s hardwarem
    4 Odpovědi
    6467 Zobrazení
    Poslední příspěvek od pcmaker
  • Pohoda a excel
    od brownwld » » v Kancelářské balíky
    1 Odpovědi
    7243 Zobrazení
    Poslední příspěvek od atari
  • Tisk sloupců vedle sebe na A4 - Excel
    od atari » » v Kancelářské balíky
    5 Odpovědi
    5787 Zobrazení
    Poslední příspěvek od atari
  • Excel 2016 - vzorec kombinace podmínek
    od MK_Vs » » v Kancelářské balíky
    5 Odpovědi
    6014 Zobrazení
    Poslední příspěvek od lubo.

Zpět na „Kancelářské balíky“