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 = FalsePokud 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.





