Díky za odpověď, ale má to pár much :)
Potřebuji ještě aby mi to po odemčení listů a sešitu zobrazilo veškeré skryté listy a tyhle listy to aktualizovalo, pak všechny schovalo kromě titulní strany. Následně zamklo SEŠIT (aby nešli zobrazit uživateli skryté listy) a jako další zamklo JEN aktivní list (titulní stranu). Mám totiž v sešitě list "kontrola" kam se mi zapisuje kdo soubor uložil a to když jsou zamčené všechny listy nefunguje.
Taky mi přišlo, že dle tvého makra se mi rozjela aktualizace, ale moc rychle se zamkli sešity, než to stihlo zaktualizovat všechno, tudíž pak vyskočila chyba, že nejde změnit zamčené listy.
Díky za pomoc :)
--- Doplnění předchozího příspěvku (18 Srp 2014 07:47) ---
Pokud vložím tohle do jednoduššího listu s kontingenčními tabulkami bez SQL příkazů (Čerpání dat do zdrojů dat pro kont.tabulky přes SQL příkazy), tak to stihne všechno úplně v pohodě :(
Kód: Vybrat vše
Private Sub Workbook_Open()
'zakázání viditelných změn
Application.ScreenUpdating = False
'zde se odhesluje sešit
ActiveWorkbook.Unprotect Password:="1111"
'zde se odhesluje activesheet
ActiveSheet.Unprotect Password:="1111"
'zobrazení hidden sheets
Dim ws As Worksheet
For Each ws In Worksheets
ws.Visible = True
Next
'refresh
ActiveWorkbook.RefreshAll
'Schování všech listů kromě activesheet
For Each ws In Worksheets
If ws.Name <> ActiveSheet.Name Then ws.Visible = False
Next
'zaheslování activesheet
ActiveSheet.Protect Password:="1111"
'zaheslování sešitu
ActiveWorkbook.Protect Password:="1111"
'povolení viditelných změn
Application.ScreenUpdating = True
'zpráva pro uživatele
MsgBox "Aktualizace hotova"
End Sub
Fakt nevim :(
--- Doplnění předchozího příspěvku (18 Srp 2014 09:15) ---
Tak jsem trochu listoval a našel odpovědi, ale teď mám trochu jinej problém.
Když dám aktualizovat data, tak se mi pěkně aktualizujou kont.tabulky, ale data z SQL se mi stáhnou, až na konci (po aktualizaci kont. tabulek), což bych chtěl obráceně.
Kód mám následující - DoEvents nepomohlo a ani Query refresh :(
Kód: Vybrat vše
Private Sub Aktualizace()
'zakázání viditelných změn
Application.ScreenUpdating = False
'zde se odhesluje sešit
ActiveWorkbook.Unprotect Password:="1111"
'zde se odhesluje activesheet
ActiveSheet.Unprotect Password:="1111"
'zobrazení hidden sheets
Dim ws As Worksheet
For Each ws In Worksheets
ws.Visible = True
Next
'refresh all
ActiveWorkbook.Refreshall
DoEvents
'refresh Queries
Dim q As QueryTable
On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
Application.StatusBar = "Aktualizuji data v: " & ws.Name
For Each q In ws.QueryTables
q.Refresh
Next
Next
'refresh pivot tables
Dim p As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
Application.StatusBar = "Aktualizuji kontingenční tabulku: " & ws.Name
For Each p In ws.PivotTables
For Each pf In p.PivotFields
For Each pi In pf.PivotItems
pi.Delete
Next
Next
p.RefreshTable
p.Update
Next
Next
'Schování všech listů kromě activesheet
For Each ws In Worksheets
If ws.Name <> ActiveSheet.Name Then ws.Visible = False
Next
'zaheslování activesheet
ActiveSheet.Protect Password:="1111"
'zaheslování sešitu
ActiveWorkbook.Protect Password:="1111", Structure:=True, Windows:=False
'povolení viditelných změn
Application.ScreenUpdating = True
'Vrácení status baru do Excelovské režie
Application.StatusBar = False
'zpráva pro uživatele
MsgBox "Aktualizace hotova"
End Sub
--- Doplnění předchozího příspěvku (18 Srp 2014 09:54) ---
SOLVED :)
Kód: Vybrat vše
'Refresh tabulek
'Je nutné mít v připojeních NEzaškrtnuté aktualizace na pozadí (Excel potom nečeká na aktualizace)
ActiveWorkbook.Connections("Karta zakázky").Refresh
ActiveWorkbook.Connections("Obraty").Refresh
ActiveWorkbook.Connections("Sestava 555").Refresh
ActiveWorkbook.Connections("Smluvni cena").Refresh
Tohle mi aktualizuje databáze, tudíž vloženo před kód s kont.tabulkama
Kód: Vybrat vše
Private Sub Workbook_Open()
'Timer
Application.Wait Now + TimeValue("0:00:03")
'zakázání viditelných změn
Application.ScreenUpdating = False
'zde se odhesluje sešit
ActiveWorkbook.Unprotect Password:="1111"
'zde se odhesluje activesheet
ActiveSheet.Unprotect Password:="1111"
'zobrazení hidden sheets
Dim ws As Worksheet
For Each ws In Worksheets
ws.Visible = True
Next
'Refresh tabulek
ActiveWorkbook.Connections("Karta zakázky").Refresh
ActiveWorkbook.Connections("Obraty").Refresh
ActiveWorkbook.Connections("Sestava 555").Refresh
ActiveWorkbook.Connections("Smluvni cena").Refresh
'refresh Queries
Dim q As QueryTable
On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
Application.StatusBar = "Aktualizuji data v: " & ws.Name
For Each q In ws.QueryTables
q.Refresh
Next
Next
'refresh pivot tables
Dim p As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
Application.StatusBar = "Aktualizuji kontingenční tabulku: " & ws.Name
For Each p In ws.PivotTables
For Each pf In p.PivotFields
For Each pi In pf.PivotItems
pi.Delete
Next
Next
p.RefreshTable
p.Update
Next
Next
'Schování všech listů kromě activesheet
For Each ws In Worksheets
If ws.Name <> ActiveSheet.Name Then ws.Visible = False
Next
'zaheslování activesheet
ActiveSheet.Protect Password:="1111"
'zaheslování sešitu
ActiveWorkbook.Protect Password:="1111", Structure:=True, Windows:=False
'povolení viditelných změn
Application.ScreenUpdating = True
'Vrácení status baru do Excelovské režie
Application.StatusBar = False
'zpráva pro uživatele
MsgBox "Aktualizace hotova"
End Sub