Stránka 1 z 1

Excel - odemknutí všech listů pomocí makra  Vyřešeno

Napsal: 23 zář 2013 10:27
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

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

Napsal: 23 zář 2013 11:17
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

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

Napsal: 23 zář 2013 12:06
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ě-?

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

Napsal: 23 zář 2013 15:01
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

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

Napsal: 23 zář 2013 17:43
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.

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

Napsal: 24 zář 2013 06:53
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

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

Napsal: 24 zář 2013 09:22
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.

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

Napsal: 24 zář 2013 10:46
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

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

Napsal: 25 zář 2013 06:27
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