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.

Úprava souboru NxABRA.xla

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:

  1. 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
  2. Dle způsobu použití funkce pro načtení comboboxu vložíme příslušný kód.

    1. 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
    2. 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
    3. 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
    4. Pokud zde tyto řádky nejsou, pak se tato část vynechává.

  3. 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.