Jak upravit definice účetních výkazů
Tento návod popisuje úpravu vlastní definice účetních výkazů, kterou je potřeba udělat, pokud otevírání souboru v Excelu trvá příliš dlouho, nedobíhá nebo dochází k problémům s výběrem období.
Postup podle tohoto návodu proveďte jen pokud používáte soubory výkazů upravené a přizpůsobené Vašemu účtovému rozvrhu. Jinak doporučujeme používat definice systémové.
Upravené definice lze získat dvěma způsoby:
- Prvním je stažení opravených souborů pro výkazy NxDefVykPO2019, NxDefVykPodnik2021, NxDefVykPodnik2019, NxDefVykNezisk2021 a poté jejich úpravou tak, aby odpovídaly vašim výkazům a vašemu účtovému rozvrhu. Soubory je možné stáhnout zde. Stáhněte vámi používanou definici i soubor NxABRA.xla, bez kterého by reporty nefungovaly. Soubory musí být v jednom adresáři.
-
Druhým způsobem je provedení úprav ve vašich stávajících výkazech (stejných úprav, které byly provedeny u souborů dostupných v předchozím bodě). V tom případě postupujte podle následujících kroků.
Dle verze vašeho operačního systému Windows nebo dle nastaveného zabezpečení je možné, že pro správnou funkci souborů stažených z internetu je nutné je "odblokovat". Toto je standardní chování.
Pokud se vám u stažených výkazů v MS Excel zobrazuje pruh upozorňující na bezpečností riziko (viz obrázek), je nutné ve vlastnostech tohoto souboru ve Windows zatrhnout možnost "Odblokovat" a potvrdit tlačítkem OK.
Nejprve upravíme soubor NxABRA.xla, kde vložíme Globální proměnnou a nahradíme stávající funkci novou funkcí.
Soubor si nejprve najdeme. Nachází se v adresáři s instalací ABRA Gen. Otevřeme jej, čímž se spustí Visual Basic Editor. Otevře se sekce "Modul 1" a v první části do sekce "Public o As NxServ.NxAccRep" vložíme Public WorkSheetCalculating As Boolean a Public WorkBookLoading As Boolean.
Dále musíme nahradit funkci. V příslušné sekci tedy nahradíme původní funkci Function NxInitAccRepFromFile() funkcí novou:
Function NxInitAccRepFromFile() As Boolean
If Not AppIsInClosing Then
InitObj
WorkBookLoading = True
NxInitAccRepFromFile = o.LoadDataFromFile("")
Application.Calculate
WorkBookLoading = False
Else
NxInitAccRepFromFile = True
End If
End Function
Úprava konkrétního výkazu - např. NxDefVykPodnik2021.xls
Do skriptů na jednotlivých listech je potřeba do sekce WorkSheet_Calulate() přidat část skriptu s použitím proměnné WorkSheetCalculating(tu jsme o krok výše doplnili do souboru NxABRA.xla). Ta se přidává pouze do skriptů listů, které mají tuto sekci. V případě výkazu NxDefVykPodnik2021.xls se toto netýká např. listu 13, do všech ostatních listů je nutné tuto část doplnit.
Stávající soubor NxDefVykPodnik2021.xls otevřeme. Podržením klávesy ALT a stisknutím klávesy F11 vyvoláme spuštění Visual Basic Editoru. Ve větvi VBAProject najdeme u jednotlivých listů sekci WorkSheet_Calulate() a do ní vložíme následující části skriptu.
Přidávané části skriptu jsou tři:
-
Na začátku nad text "Set fActiveList = List<číslo_listu>" (případně pokud zde není tento text, tak přímo pod text "Private Sub Worksheet_Calculate()") se přidá:
If WorkSheetCalculating Then GoTo Break WorkSheetCalculating = True
-
Dle způsobu použití funkce pro načtení comboboxu vložíme příslušný kód.
-
Pokud je pod řádkem "Set fActiveList = List<číslo_listu>" použito "Set fActiveCombo = fActiveList. <název comboboxu>", přidá se pod tento řádek kód:
If (fActiveCombo.ListCount > 0) And (WorkBookLoading = False) Then GoTo Finally ' zamedzit reinicializacii End If
-
Pokud je pod řádkem "Set fActiveList = List<číslo_listu>" použito "p_FillCombo fActiveList.<název comboboxu>", přidá se nad tento řádek kód:
If (fActiveList.<název comboboxu>.ListCount > 0) And (WorkBookLoading = False) Then GoTo Finally End If
-
Pokud je pod řádkem "Set fActiveList = List<číslo_listu>" použito " p_ShowCombo fActiveList.cbShowRows", přidá se nad tento řádek kód:
If (fActiveList.cbShowRows.ListCount > 0) And (WorkBookLoading = False) Then GoTo Finally End If
-
Pokud zde tyto řádky nejsou, pak se tato část vynechává.
-
-
Na konec skriptu nad text "Break: End Sub" se přidá:
Finally: WorkSheetCalculating = False
Pokud jste část skriptu v bodě 2 nepřidali z důvodu chybějících vyjmenovaných řádků, pak doplňujte pouze následující:
WorkSheetCalculating = False
Příklad doplnění částí skriptu na Listu 1.
Tyto kroky je nyní nutné provést u všech listů! Ovšem s výjimkou těch, které nemají sekci WorkSheet_Calulate().
Pokud se na konci skriptu nad textem End Sub nenachází text "Break:", je nutné jej doplnit také. Ve výkazu NxDefVykPodnik2021.xls se to může týkat listu 15.
V tomto případě na Listu 15 Break doplnit musíme, jelikož tam chyběl.
Změny uložíme. Následně již budou definice účetních výkazů fungovat běžným způsobem.