4.1. Analiza AWN jest dokonywana na poziomie VBA



Podobne dokumenty
Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK.

INSTRUKCJA SKOKU GOTO

LibreOffice Calc VBA

Technologie informacyjne: Excel i VBA

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Wprowadzenie do programowania w VBA

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Właściwości i metody obiektu Comment Właściwości

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Algorytmika i Programowanie VBA 1 - podstawy

Obsługa blędów i zewnętrznych plików

Visual Basic for Applications. Wstęp

Laboratorium Programowania Kart Elektronicznych

Automatyzacja pracy w AutoCAD

PROGRAMOWANIE MAKR W PROGRAMIE EXCEL W JĘZYKU VISUAL BASIC

Losowe wyszukiwanie rozwiązań (VBA)

Laboratorium Programowania Kart Elektronicznych

Technologia informacyjna programowanie Janusz Uriasz

- 1 - Visual Basic dla aplikacji w Excelu 2000 (Jacek Zabawa, 2005)

Arkusze kalkulacyjne i VBA

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

VBA-podstawy cz. 1. Począwszy od wersji Office 2010 skoroszyty Excel wsparte makrami VB mają rozszerzenie.xlsm

Aplikacje w środowisku VBA. Visual Basic for Aplications

PROGRAMOWANIE MAKR W PROGRAMIE EXCEL W JĘZYKU VISUAL BASIC

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Instrukcje sterujące. Programowanie komputerowe

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 3. Programowanie komputerowe

VBA praca z makrami w Excelu: piszemy kod! Ulepszamy program! 0. Parę uwag o samym edytorze

Instrukcje cykliczne (pętle) WHILE...END WHILE

- 1 - Visual Basic dla aplikacji w Excelu 2000 (Jacek Zabawa, 2005)

Do obiektów nie odwołujemy się bezpośrednio, tylko przez ich atrybuty i metody. Obiekt.identyfikator[.identyfikator]

Materiały do laboratorium MS ACCESS BASIC

Visual Basic dla AutoCAD

Visual Basic dla Aplikacji

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

Bazy Danych. Wykład VII Makropolecenia. Copyright by Arkadiusz Rzucidło 1

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Kiedy i czy konieczne?

Akademia Morska w Szczecinie Wydział Nawigacyjny TRANSPORT MORSKI

Visual Basic for Application (VBA)

Automatyzacja plików graficznych

Visual Basic for Application (VBA)

Makra VBA w Excelu dla początkujących

01 grid tablica grid. Copyright 2017, mgr inż. Janusz Bonarowski 1

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.

Visual Basic Debugging and Error Handling

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Procedury i funkcje. Programowanie komputerowe

Parę uwag, uzupełnień

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

1 Algorytmy. Algorytmy i VBA. 1. Zapoznaj się z symboliką schematów blokowych.

MsgBox(Komunikat [, Przyciski] [, Tytuł] [, PlikHelp, HelpContext])

Rozwiązywanie równań nieliniowych

PRACA Z FORMULARZAMI UserForm

Działki Przygotowanie organizacyjne

2. Wstaw przyciski: a. wykonujące funkcje z ćwiczenia 1 b. zastosuj różnorodne właściwości dla przycisku

3. Podstawy programowania w MS EXCEL

Zintegrowany kurs języka VBA cz. 1

DAO. tworzenie tabeli

Funkcje wbudowane - numeryczne

VBA 1 VBA TYPY PROCEDUR (PODPROGRAM, FUNKCJA) ZMIENNE, DEKLARACJA ZMIENNYCH FUNKCJA MsgBox

PROGRAMOWANIE W EXCELU W JĘZYKU VISUAL BASIC FOR APPLICATIONS

COMARCH IT AKADEMIA. Programista VBA w Microsoft Excel (microbootcamp)

Visual Basic for Application (VBA)

Klasa bazowa i klasy potomne - doskonalenie umiejtnoci projektowania i wykorzystania klas (45 min)

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Zmienne, instrukcje warunkowe

Programowanie mikrokontrolerów - laboratorium

Aplikacje geodezyjne

Arkusze kalkulacyjne i VBA

Zadanie. Menu Plik niech posiada dwie pozycje: Tekstowy i Excel, a każda z nich niech posiada dwie pozycje Otwórz i Zapisz, patrz rys. 2.

MS Excel. 1. JEŻELI - funkcja służąca do testowania warunków logicznych. Składnia: JEŻELI(warunek_logiczny; wartość_dla_prawdy; wartość_dla_fałszu)

VISUAL BASIC. deklaracja nazwa As typ_zmiennej. deklaracja Dim, Private zasięg lokalny. - Public zasięg globalny Liczby całkowite: BYTE [0..

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

1. JEŻELI - funkcja służąca do testowania warunków logicznych. JEŻELI(warunek_logiczny; wartośd_dla_prawdy; wartośd_dla_fałszu)

MS EXCEL for Windows Ćwiczenie nr 1 czas 3x45 min

Platforma.NET laboratorium 1. Visual Basic.NET podstawowe elementy języka. Wykonanie warunkowe If End If

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

2.1 Funkcje - na przykładzie wyceny europejskiej

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

Visual Basic: Tablice, sortowanie, r. ak. 2014/2015

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Ten odcinek Akademii PC Kuriera poświęcony zostanie tworzeniu i wykorzystaniu funkcji i procedur w języku Visual Basic.NET.

Programowanie w Visual Basic. Programowanie w Visual Basic 1

Materiały pomocnicze do zajęć z przedmiotu Projekt ADP

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Porównanie generatorów liczb losowych wykorzystywanych w arkuszach kalkulacyjnych

Informatyka 1. Przetwarzanie tekstów

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

Class1.vb. _Dlugosc_stopnia = value End Set End Property Public Property Faza As Single Get Return _Faza End Get

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PRZEKROJOWY.

Tablice, DataGridView

VBA ZAJĘCIA NR 7! praca z plikami (kontynuacja zajęć 6)

Programowanie obiektowe

Materiały pomocnicze do zajęć z przedmiotu Projekt ADP

Transkrypt:

4.1. Analiza AWN jest dokonywana na poziomie VBA Centralnym miejscem systemu wspomagania dokonania analizy wydatków na wynagrodzenia nauczycieli są makra (procedury, programy) przygotowane w środowisku VBA. Makra zostały podzielone na pięć modułów. 4.1.1. Makra modułu Glowny ------------------------------------------------------------------------ deklaracja zmiennych i stałych ------------------------------------------------------------------------ Dim i_dzien(1 To 31, 1 To 12) As Integer tablica wart. w zakresie "Rok" Dim i_lidnimies(1 To 12) As Integer tabl. liczby dni w kolejnych mies. Dim i_sumadnirob(1 To 12) As Integer suma dni roboczych w danym mies. Dim i_dninieog(0 To 12) As Integer suma dni nieobecn. - ogółem Dim i_dniniero(0 To 12) As Integer suma dni nieobecn. - roboczych Dim i_dninieog1(0 To 12) As Integer suma dni nieobecn. - ogółem (typ 1) Dim i_dniniero1(0 To 12) As Integer suma dni nieobecn. - robocz. (typ 1) Dim i_dninieog2(0 To 12) As Integer suma dni nieobecn. - ogółem (typ 2) Dim i_dniniero2(0 To 12) As Integer suma dni nieobecn. - robocz. (typ 2) Dim i_dninieog3(0 To 12) As Integer suma dni nieobecn. - ogółem (typ 3) Dim i_dniniero3(0 To 12) As Integer suma dni nieobecn. - robocz. (typ 3) Dim d_etat(1 To 12) As Double wymiar etatu Dim d_mswz(1 To 12) As Double minimalna stawka wynagrodzenia zasadniczego Dim d_strz(1 To 12) As Double struktura zatrudnienia Dim d_oswz(1 To 12) As Double osobista stawka wynagrodzenia zasadniczego Dim i_nauczyciel As Integer licznik nauczycieli Dim str_awn As String plik z danymi Dim i_metoda As Integer wybór metody liczenia struktury zatrudnienia Dim cti_zaokr As Integer dokładność obl. (miejsc po przecinku - prawo) Public Const cti_zaokrzl As Integer = 2 dokładność obliczeń (kwoty) Const cti_luty As Integer = 28 liczby dni w lutym dla danego roku Dim str_folder As String folder, w którym znajdują się pliki analizy Dim str_ark As String arkusz do pobrania danych z plików awn*.xls Dim i_wierszanalizy As Integer licznik kolejnych wierszy w pliku analizy Public Analiza As String arkusz dokonania analizy dla danej grupy naucz. Public i_linaproc As Integer ------------------------------------------------------------------------ Procedura : Dni_01() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data wer. : 2014-03-20 Zadanie : Zliczenie i oznaczenie dni w danym roku Uwagi : Dane są pobierane z ukrytego arkusza "Tablice" ------------------------------------------------------------------------ Sub Dni_01() Dim m As Integer licznik miesięcy w tablicy zakresu "Rok" Dim n As Integer licznik dni danego miesiąca w tablicy zakresu "Rok" For m = 1 To 12 For n = 1 To 31

i_dzien(n, m) = _ Tablice.Range("Rok").Cells(n, m) Next n Next m For m = 1 To 12 i_lidnimies(m) = _ Tablice.Range("LiczbaDni").Cells(m, 1) Next m For m = 1 To 12 i_sumadnirob(m) = 0 For n = 1 To 31 i_sumadnirob(m) = i_sumadnirob(m) + i_dzien(n, m) Next n Next m ------------------------------------------------------------------------ Procedura : Nieobecnosci_01() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data wer. : 2014-03-24 Zadanie : Zliczenie dni nieobecności w zależności od typu nieobecn. Uwagi : Dane (daty) są pobierane z arkuszy awn* ------------------------------------------------------------------------ Sub Nieobecnosci_01() Dim i_dziennie(1 To 31, 1 To 12) As Integer Dim i_dninie As Integer Dim i As Integer licznik kolejnych nieobecności Dim j As Integer licznik dni dla danego okresu nieobecności Dim m As Integer licznik miesięcy w tablicy zakresu "Rok" Dim n As Integer licznik dni danego miesiąca w tablicy zakresu "Rok" Dim i_liczbanie As Integer liczba nieobecności Dim i_typnie As Integer typ nieobecności Dim i_data2 As Long Dim i_data1 As Long m = 0 i_liczbanie = WartZamPlik(str_Folder, str_awn, str_ark, 95, _ 5 + 3 * i_nauczyciel) For i = 1 To i_liczbanie i_typnie = WartZamPlik(str_Folder, str_awn, str_ark, 27 + i, _ 5 + 3 * i_nauczyciel) If i_typnie <> 0 Then i_data2 = WartZamPlik(str_Folder, str_awn, str_ark, 27 + i, _ 7 + 3 * i_nauczyciel) i_data1 = WartZamPlik(str_Folder, str_awn, str_ark, 27 + i, _ 6 + 3 * i_nauczyciel) i_dninie = i_data2 - i_data1 + 1 For j = 1 To i_dninie n = Day(DateValue(WartZamPlikData(str_Folder, str_awn, _ str_ark, 27 + i, 6 + 3 * i_nauczyciel)) + j - 1) 2

m = Month(DateValue(WartZamPlikData(str_Folder, str_awn, _ str_ark, 27 + i, 6 + 3 * i_nauczyciel)) + j - 1) i_dniniero(m) = i_dniniero(m) + i_dzien(n, m) i_dninieog(m) = i_dninieog(m) + 1 Select Case WartZamPlik(str_Folder, str_awn, str_ark, _ 27 + i, 5 + 3 * i_nauczyciel) Case 1 nie jest uwzględniania w liczeniu struktury i_dniniero1(m) = i_dniniero1(m) + i_dzien(n, m) i_dninieog1(m) = i_dninieog1(m) + 1 Case 2 jest uwzględniana w liczeniu struktury i_dniniero2(m) = i_dniniero2(m) + i_dzien(n, m) i_dninieog2(m) = i_dninieog2(m) + 1 If i_dninieog2(m) = 31 And i_metoda = 3 Then i_dninieog2(m) = 30 If m = 2 And i_dninieog2(m) = cti_luty And _ i_metoda = 3 Then i_dninieog2(m) = 30 Case 3 jest uwzględn. w licz. strukt. (za mies. 30 dni) i_dniniero3(m) = i_dniniero3(m) + i_dzien(n, m) i_dninieog3(m) = i_dninieog3(m) + 1 If i_dninieog3(m) = 31 Then i_dninieog3(m) = 30 If m = 2 And i_dninieog3(m) = cti_luty Then i_dninieog3(m) = 30 End Select Next j ------------------------------------------------------------------------ Procedura : WymEtat_MiOswz_StrZ_01() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data wer. : 2014-04-08 Zadanie : Obliczenie wymiaru etatu, miesięcznej struktury zatrudn. oraz osobistej stawki wynagrodzenia zasadniczego Uwagi : Dane są pobierane z arkuszy awn* ------------------------------------------------------------------------ Sub WymEtat_MiOswz_StrZ_01() Dim i As Integer i_metoda = DanPar.Range("D10").Value For i = 1 To 12 If WartZamPlik(str_Folder, str_awn, str_ark, 13 + i, _ 7 + 3 * i_nauczyciel) = 0 Then d_etat(i) = 0 Else d_etat(i) = WartZamPlik(str_Folder, str_awn, str_ark, _ 3

13 + i, 6 + 3 * i_nauczyciel) / WartZamPlik(str_Folder, _ str_awn, str_ark, 13 + i, 7 + 3 * i_nauczyciel) Select Case i_metoda Case 1 d_mswz(i) = WartZamPlik(str_Folder, str_awn, str_ark, _ 13 + i, 5 + 3 * i_nauczyciel) d_strz(i) = Round(d_Etat(i) * (1 - i_dninieog2(i) / _ i_lidnimies(i) - i_dninieog3(i) / 30), cti_zaokr) d_oswz(i) = Round(d_Mswz(i) * (d_etat(i) * _ (1 - i_dninieog2(i) / i_lidnimies(i) - i_dninieog3(i) / _ 30)), cti_zaokrzl) Case 2 d_mswz(i) = WartZamPlik(str_Folder, str_awn, str_ark, _ 13 + i, 5 + 3 * i_nauczyciel) d_strz(i) = Round(d_Etat(i) * (1 - i_dniniero2(i) / _ i_sumadnirob(i) - i_dninieog3(i) / 30), cti_zaokr) d_oswz(i) = Round(d_Mswz(i) * (d_etat(i) * _ (1 - i_dniniero2(i) / i_sumadnirob(i) - i_dninieog3(i) / _ 30)), cti_zaokrzl) Case 3 d_mswz(i) = WartZamPlik(str_Folder, str_awn, str_ark, _ 13 + i, 5 + 3 * i_nauczyciel) d_strz(i) = Round(d_Etat(i) * (1 - i_dninieog2(i) / _ 30 - i_dninieog3(i) / 30), cti_zaokr) d_oswz(i) = Round(d_Mswz(i) * (d_etat(i) * _ (1 - i_dninieog2(i) / 30 - i_dninieog3(i) / 30)), _ cti_zaokrzl) End Select ------------------------------------------------------------------------ Procedura : CzystyObszar_01() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data wer. : 2014-03-01 Zadanie : Usunięcie wartości komórek z obszaru mormalnej tabeli przed ponownym wypełnieniem danymi Uwagi : obsługuje obszar tabeli w arkuszu "a_*" ------------------------------------------------------------------------ Sub CzystyObszar_01() Dim l_nrwiersza As Long Dim l_nrkolumny As Long With ThisWorkbook.Worksheets(Analiza).Range("A13").Select l_nrwiersza =.UsedRange.Rows.Count l_nrkolumny =.UsedRange.Columns.Count.Range(Selection, Selection.Rows(l_NrWiersza)).Select.Range(Selection, Selection.Columns(l_NrKolumny)).Select Selection.ClearContents.Range("B11").Select 4

End With ------------------------------------------------------------------------ Procedura : DoklObliczStr() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data wer. : 2014-04-08 Zadanie : Formatowanie wartości struktur zatrudnienia w zależności od wyboru dokładności obliczeń Uwagi : obsługuje obszar tabeli w arkuszu "a_*" ------------------------------------------------------------------------ Sub DoklObliczStr() Columns("D:R").Select Select Case cti_zaokr Case 0 Selection.NumberFormat = "#,##0" Case 1 Selection.NumberFormat = "#,##0.0" Case 2 Selection.NumberFormat = "#,##0.00" Case 3 Selection.NumberFormat = "#,##0.000" Case 4 Selection.NumberFormat = "#,##0.0000" Case 5 Selection.NumberFormat = "#,##0.00000" Case 6 Selection.NumberFormat = "#,##0.000000" Case 7 Selection.NumberFormat = "#,##0.0000000" End Select Range("B13").Select ------------------------------------------------------------------------ Procedura : Analiza_01() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data wer. : 2014-04-27 Zadanie : Obliczenia wartości "średniorocznych" i wypełnienie danymi tabeli normalnej Uwagi : obsługuje obszar tabeli w arkuszu "a_*" ------------------------------------------------------------------------ Sub Analiza_01() Dim i As Integer Dim d_strz8 As Double Dim d_suma8 As Double Dim d_strz4 As Double Dim d_suma4 As Double 5

Dim d_strz12 As Double Dim d_suma12 As Double Dim d_oswz12 As Double Dim d_sumawyd8 As Double Dim d_sumawyd4 As Double Dim d_sumawyd12 As Double Dim d_wydatki As Double Dim d_sumaoswz As Double Dim i_liczbanauczycieli As Integer Dim i_nrpliku As Integer i_liczbanauczycieli = WartZamPlik(str_Folder, str_awn, str_ark, 11, 3) For i_nauczyciel = 0 To i_liczbanauczycieli - 1 For i = 1 To 12 i_dninieog(i) = 0 i_dniniero(i) = 0 i_dninieog1(i) = 0 i_dniniero1(i) = 0 i_dninieog2(i) = 0 i_dniniero2(i) = 0 i_dninieog3(i) = 0 i_dniniero3(i) = 0 Nieobecnosci_01 WymEtat_MiOswz_StrZ_01 d_suma8 = 0 d_suma4 = 0 d_suma12 = 0 d_sumaoswz = 0 d_sumawyd8 = 0 d_sumawyd4 = 0 d_sumawyd12 = 0 With ThisWorkbook.Worksheets(Analiza).Cells(i_WierszAnalizy + i_nauczyciel, 2).Value = str_ark & _ WartZamPlik(str_Folder, str_awn, str_ark, 11, 5 + 3 * i_nauczyciel).cells(i_wierszanalizy + i_nauczyciel, 3).Value = _ WartZamPlik(str_Folder, str_awn, str_ark, 12, 5 + 3 * i_nauczyciel) If WartZamPlik(str_Folder, str_awn, str_ark & "W", 4, 9) = 1 Then For i = 1 To 12 d_wydatki = WartZamPlik(str_Folder, str_awn, str_ark & "W", _ 13 + i, 5 + 3 * i_nauczyciel).cells(i_wierszanalizy + i_nauczyciel, 36 + i).value = _ d_wydatki If i <= 8 Then d_sumawyd8 = d_sumawyd8 + d_wydatki Else d_sumawyd4 = d_sumawyd4 + d_wydatki d_sumawyd12 = d_sumawyd8 + d_sumawyd4.cells(i_wierszanalizy + i_nauczyciel, 36 + i).value = _ d_sumawyd8.cells(i_wierszanalizy + i_nauczyciel, 37 + i).value = _ 6

d_sumawyd4.cells(i_wierszanalizy + i_nauczyciel, 38 + i).value = _ d_sumawyd12 Else If i_nauczyciel = i_liczbanauczycieli - 1 Then For i = 1 To 12 d_wydatki = WartZamPlik(str_Folder, str_awn, _ str_ark & "W", 30 + i, 17).Cells(i_WierszAnalizy + i_nauczyciel, 36 + i).value = _ d_wydatki If i <= 8 Then d_sumawyd8 = d_sumawyd8 + d_wydatki Else d_sumawyd4 = d_sumawyd4 + d_wydatki d_sumawyd12 = d_sumawyd8 + d_sumawyd4.cells(i_wierszanalizy + i_nauczyciel, 36 + i).value = _ d_sumawyd8.cells(i_wierszanalizy + i_nauczyciel, 37 + i).value = _ d_sumawyd4.cells(i_wierszanalizy + i_nauczyciel, 38 + i).value = _ d_sumawyd12 For i = 1 To 12.Cells(i_WierszAnalizy + i_nauczyciel, 3 + i).value = d_strz(i) If i <= 8 Then d_suma8 = d_suma8 + d_strz(i) Else d_suma4 = d_suma4 + d_strz(i).cells(i_wierszanalizy + i_nauczyciel, 18 + i).value = d_oswz(i) d_sumaoswz = d_sumaoswz + d_oswz(i) d_strz8 = Round(d_Suma8 / 8, cti_zaokr) d_strz4 = Round(d_Suma4 / 4, cti_zaokr) d_strz12 = Round((d_Suma8 + d_suma4) / 12, cti_zaokr) d_oswz12 = Round(d_SumaOswz / 12, cti_zaokrzl).cells(i_wierszanalizy + i_nauczyciel, 16).Value = d_strz8.cells(i_wierszanalizy + i_nauczyciel, 17).Value = d_strz4.cells(i_wierszanalizy + i_nauczyciel, 18).Value = d_strz12.cells(i_wierszanalizy + i_nauczyciel, 31).Value = d_oswz12.cells(i_wierszanalizy + i_nauczyciel, 32).Value = d_sumaoswz.cells(i_wierszanalizy + i_nauczyciel, 33).Value = _ WartZamPlik(str_Folder, str_awn, str_ark, 7, 4).Cells(i_WierszAnalizy + i_nauczyciel, 34).Value = _ WartZamPlik(str_Folder, str_awn, str_ark, 6, 4).Cells(i_WierszAnalizy + i_nauczyciel, 35).Value = _ WartZamPlik(str_Folder, str_awn, str_ark, 8, 4).Cells(i_WierszAnalizy + i_nauczyciel, 36).Value = str_awn.cells(i_wierszanalizy + i_nauczyciel, 1).Value = _ i_wierszanalizy + i_nauczyciel - 12 7

On Error Resume Next.Cells(11, 3).Value = (i_wierszanalizy + i_nauczyciel - 12) / _ i_linaproc Pliki.Range("G4").Value End With _Nauczyciel i_wierszanalizy = i_wierszanalizy + i_nauczyciel ------------------------------------------------------------------------ Procedura : Funkcja WartZamPlik Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data wer. : 2014-04-09 Zadanie : Pobranie wartości z zamkniętego pliku Uwagi : ------------------------------------------------------------------------ Function WartZamPlik(ByVal str_sciezka As String, _ str_folderplik As String, str_arkusz As String, i_nrw As Integer, _ i_nrk As Integer) As Variant Dim str_arg As String WartZamPlik = "" If Right(str_Sciezka, 1) <> "\" Then str_sciezka = str_sciezka & "\" If Dir(str_Sciezka & "\" & str_folderplik) = "" Then Exit Function str_arg = "" & str_sciezka & "[" & str_folderplik & "]" & _ str_arkusz & "!" & Cells(i_nrW, i_nrk).address(true, True, _ xlr1c1) On Error Resume Next WartZamPlik = ExecuteExcel4Macro(str_Arg) End Function ------------------------------------------------------------------------ Procedura : Funkcja WartZamPlikData Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data wer. : 2014-04-09 Zadanie : Pobranie wartości (daty) z zamkniętego pliku Uwagi : ------------------------------------------------------------------------ Function WartZamPlikData(ByVal str_sciezka As String, _ str_folderplik As String, str_arkusz As String, i_nrw As Integer, _ i_nrk As Integer) As Date Dim str_arg As String WartZamPlikData = #12:00:00 AM# If Right(str_Sciezka, 1) <> "\" Then str_sciezka = str_sciezka & "\" If Dir(str_Sciezka & "\" & str_folderplik) = "" Then Exit Function str_arg = "" & str_sciezka & "[" & str_folderplik & "]" & _ str_arkusz & "!" & Cells(i_nrW, i_nrk).address(true, True, _ xlr1c1) On Error Resume Next WartZamPlikData = ExecuteExcel4Macro(str_Arg) End Function 8

------------------------------------------------------------------------ Procedura : AnalizaPliki() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data wer. : 2014-04-27 Zadanie : Obsługa (procedurą Analiza_01) listy plików Uwagi : integracja wykorzystania wszystkich procedur ------------------------------------------------------------------------ Sub AnalizaPliki() Dim i_liczbaplikow As Integer Dim i As Integer i_liczbaplikow = Pliki.Range("F5").Value str_folder = Pliki.Range("C4").Value cti_zaokr = DanPar.Range("D14").Value dokładność obliczeń (struktura) str_ark = ThisWorkbook.Worksheets(Analiza).Range("B11").Value i_wierszanalizy = 13 CzystyObszar_01 Dni_01 DoklObliczStr For i = 1 To i_liczbaplikow str_awn = Pliki.Cells(6 + i, 1).Value If str_awn <> "" Then Analiza_01 4.1.2. Makra modułu Analiza ------------------------------------------------------------------------- Procedura : AnalizaNS (uaktywniana przyciskiem w arkuszu "a_ns" Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-04-27 Zadanie : Pobranie danych dotyczących naucz. stażystów z arkuszy pozyskania danych (awn*); wyliczenie struktur zatrudnienia; wyliczenie osobistych stawek wynagrodzenia zasadniczego. Uwagi : ------------------------------------------------------------------------- Sub AnalizaNS() On Error GoTo AnalizaNS_Error Analiza = "a_ns" i_linaproc = Pliki.Range("G4").Value AnalizaPliki On Error GoTo 0 Exit Sub AnalizaNS_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") w AnalizaNS" 9

------------------------------------------------------------------------- Procedura : AnalizaNK (uaktywniana przyciskiem w arkuszu "a_nk" Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-04-27 Zadanie : Pobranie danych dotyczących naucz. kontraktowych z arkuszy pozyskania danych (awn*); wyliczenie struktur zatrudnienia; wyliczenie osobistych stawek wynagrodzenia zasadniczego. Uwagi : ------------------------------------------------------------------------- Sub AnalizaNK() On Error GoTo AnalizaNK_Error Analiza = "a_nk" i_linaproc = Pliki.Range("H4").Value AnalizaPliki On Error GoTo 0 Exit Sub AnalizaNK_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") w AnalizaNK" ------------------------------------------------------------------------- Procedura : AnalizaNM (uaktywniana przyciskiem w arkuszu "a_nm" Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-04-27 Zadanie : Pobranie danych dotyczących naucz. mianowanych z arkuszy pozyskania danych (awn*); wyliczenie struktur zatrudnienia; wyliczenie osobistych stawek wynagrodzenia zasadniczego. Uwagi : ------------------------------------------------------------------------- Sub AnalizaNM() On Error GoTo AnalizaNM_Error Analiza = "a_nm" i_linaproc = Pliki.Range("I4").Value AnalizaPliki On Error GoTo 0 Exit Sub AnalizaNM_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") w AnalizaNM" ------------------------------------------------------------------------- Procedura : AnalizaND (uaktywniana przyciskiem w arkuszu "a_nd" Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-04-27 Zadanie : Pobranie danych dotyczących naucz. dyplomowanych z arkuszy pozyskania danych (awn*); wyliczenie struktur zatrudnienia; wyliczenie osobistych stawek wynagrodzenia zasadniczego. 10

Uwagi : ------------------------------------------------------------------------- Sub AnalizaND() On Error GoTo AnalizaND_Error Analiza = "a_nd" i_linaproc = Pliki.Range("J4").Value AnalizaPliki On Error GoTo 0 Exit Sub AnalizaND_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") w AnalizaND" 4.1.3. Makra modułu AnalizaJDU Dim DaneA As String Dim DaneJDU As String ------------------------------------------------------------------------- Procedura : AnalizaJDU() (uaktywniana przyciskiem w arkuszach "jdu_*") Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-05-08 Zadanie : Pobranie danych dotyczących nauczycieli z arkuszy "a_*"; Wyliczenie jednorazowych dodatków uzupełniających. Uwagi : wybór obsługi grupy naucz., wyczyszczenie obszaru tabeli ------------------------------------------------------------------------- Sub AnalizaJDU() On Error GoTo AnalizaJDU_ND_Error DaneA = "a_" & Range("J4") DaneJDU = "jdu_" & Range("J4") CzystyObszar_jdu jdu_1 On Error GoTo 0 Exit Sub AnalizaJDU_ND_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") w Analiza" ------------------------------------------------------------------------- Procedura : jdu_1() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-05-08 Zadanie : Pobranie danych dotyczących nauczycieli z arkuszy "a_*"; Wyliczenie jednorazowych dodatków uzupełniających. Uwagi : centralna część procedury AnalizaJDU() ------------------------------------------------------------------------- Sub jdu_1() Dim l_maxwiersz As Long 11

Dim i As Long Dim i_okrbaz As Integer ThisWorkbook.Worksheets(DaneA).Select Worksheets(DaneA).Range("A12").Select l_maxwiersz = WorksheetFunction.Max(Range("A13:A9999")) ThisWorkbook.Worksheets(DaneJDU).Select For i = 1 To l_maxwiersz Cells(22 + i, 2) = Sheets(DaneA).Cells(12 + i, 1) Cells(22 + i, 3) = Sheets(DaneA).Cells(12 + i, 2) Cells(22 + i, 4) = Sheets(DaneA).Cells(12 + i, 3) Cells(22 + i, 5) = Sheets(DaneA).Cells(12 + i, 33) Cells(22 + i, 6) = Sheets(DaneA).Cells(12 + i, 36) Cells(22 + i, 8) = Cells(22 + i, 4) & " (" & Cells(22 + i, 3) _ & "/" & Cells(22 + i, 2) & "/" & Cells(22 + i, 5) & "/" _ & Cells(22 + i, 6) & ")" Cells(22 + i, 10) = Sheets(DaneA).Cells(12 + i, 32) i_okrbaz = Sheets("DanPar").Range("J21").Value Select Case i_okrbaz Case 2 If Cells(16, 11) < 0 Then Cells(22 + i, 11) = -Round(Cells(16, 11) * _ Cells(22 + i, 10) / Cells(15, 11), cti_zaokrzl) Else Cells(22 + i, 11) = 0 Case 1 If Cells(18, 11) < 0 Then Cells(22 + i, 11) = -Round(Cells(18, 11) * _ Cells(22 + i, 10) / Cells(15, 11), cti_zaokrzl) Else Cells(22 + i, 11) = 0 End Select ------------------------------------------------------------------------- Procedura : CzystyObszar_jdu() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-05-08 Zadanie : Wyczyszczenie obszaru danych w arkuszu "jdu" Uwagi : ------------------------------------------------------------------------- Sub CzystyObszar_jdu() Dim l_nrwiersza As Long Dim l_nrkolumny As Long ThisWorkbook.Worksheets(DaneJDU).Select Worksheets(DaneJDU).Range("A23").Select l_nrwiersza = Pliki.UsedRange.Rows.Count l_nrkolumny = Pliki.UsedRange.Columns.Count 12

Worksheets(DaneJDU).Range(Selection, _ Selection.Rows(l_NrWiersza)).Select Worksheets(DaneJDU).Range(Selection, _ Selection.Columns(l_NrKolumny)).Select Selection.ClearContents Worksheets(DaneJDU).Range("A23").Select 4.1.4. Makra modułu ObslugaPlikow ------------------------------------------------------------------------- Procedura : ListaPlikow() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-05-06 Zadanie : Stworzenie listy plików z danymi do analizy Uwagi : ------------------------------------------------------------------------- Sub ListaPlikow() Dim str_folder As String Dim str_folderplik As String Dim r As Integer Dim v_wartkom As Variant Dim str_lista() As String Dim i_licznik As Integer Dim i As Integer CzystyObszar_02 Pliki.Range("C4").Value = "=FOLDER()" str_folder = Pliki.Range("C4").Value tworzy listę skoroszytów w folderze str_folder i_licznik = 0 str_folderplik = Dir(str_Folder & "\" & "*.*") While str_folderplik <> "" i_licznik = i_licznik + 1 ReDim Preserve str_lista(1 To i_licznik) str_lista(i_licznik) = str_folderplik str_folderplik = Dir Wend If i_licznik = 0 Then Exit Sub pobiera wartość ze wskazanej komórki z każdego pliku z listy r = 6 For i = 1 To i_licznik r = r + 1 Cells(r, 2).Value = i Cells(r, 3).Formula = str_lista(i) If Left(Cells(r, 3).Value, 3) <> "awn" _ Or Right(Cells(r, 3).Value, 3) <> "xls" _ Or Left(Cells(r, 3).Value, 6) = "awn000" Then Cells(r, 5).Value = "N" Else Cells(r, 6).Value = Cells(r, 3).Value Cells(r, 5).Value = "T" 13

Cells(r, 4).Formula = WartzNieOtwPlik(str_Folder, _ str_lista(i), "Podmiot", "D7") Cells(r, 7).Formula = WartzNieOtwPlik(str_Folder, _ str_lista(i), "ns", "C11") Cells(r, 8).Formula = WartzNieOtwPlik(str_Folder, _ str_lista(i), "nk", "C11") Cells(r, 9).Formula = WartzNieOtwPlik(str_Folder, _ str_lista(i), "nm", "C11") Cells(r, 10).Formula = WartzNieOtwPlik(str_Folder, _ str_lista(i), "nd", "C11") ------------------------------------------------------------------------- Procedura : Funkcja WartzNieOtwPlik Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-05-06 Zadanie : Pobieranie danych z zamkniętyvh plików Uwagi : na podstawie funkcji z modułu "Glowny" ------------------------------------------------------------------------- Function WartzNieOtwPlik(ByVal str_sciezka As String, str_folderplik _ As String, str_arkusz As String, str_komorka As String) As Variant Dim str_arg As String WartzNieOtwPlik = "" If Right(str_Sciezka, 1) <> "\" Then str_sciezka = str_sciezka & "\" If Dir(str_Sciezka & "\" & str_folderplik) = "" Then Exit Function str_arg = "" & str_sciezka & "[" & str_folderplik & "]" & _ str_arkusz & "!" & Range(str_Komorka).Address(True, True, xlr1c1) On Error Resume Next WartzNieOtwPlik = ExecuteExcel4Macro(str_Arg) End Function ------------------------------------------------------------------------- Procedura : Funkcja FOLDER() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-04-03 Zadanie : Identyfikacja folderu Uwagi : ------------------------------------------------------------------------- Function FOLDER() Application.Volatile Thrue FOLDER = Application.Caller.Parent.Parent.Path End Function ------------------------------------------------------------------------- Procedura : CzystyObszar() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-04-03 Zadanie : Wyczyszczenie obszaru danych w arkuszu "Pliki" 14

Uwagi : ------------------------------------------------------------------------- Sub CzystyObszar_02() Dim l_nrwiersza As Long Dim l_nrkolumny As Long Pliki.Range("B7").Select l_nrwiersza = Pliki.UsedRange.Rows.Count l_nrkolumny = Pliki.UsedRange.Columns.Count Pliki.Range(Selection, Selection.Rows(l_NrWiersza)).Select Pliki.Range(Selection, Selection.Columns(l_NrKolumny)).Select Selection.ClearContents Pliki.Range("B7").Select ------------------------------------------------------------------------- Procedura : GenPliki() Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-04-03 Zadanie : Generator plików pozyskania danych Uwagi : Kopiowane są pliki wzorcowe ------------------------------------------------------------------------- Sub GenPlik() Dim i_nrp As Integer Dim i_nrk As Integer Dim i_metoda As Integer Dim i As Integer i_nrp = DanPar.Range("D17") i_nrk = DanPar.Range("D18") i_metoda = DanPar.Range("D10") Pliki.Range("C4").Value = "=FOLDER()" Workbooks.Open Filename:=Pliki.Range("C4") & "\LNID000.xls" For i = i_nrp To i_nrk ActiveWorkbook.SaveAs Filename:=Pliki.Range("C4") & "\LNID" _ & i & ".xls", FileFormat:=xlExcel8 ActiveWindow.Close Workbooks.Open Filename:=Pliki.Range("C4") & "\awn000.xls" For i = i_nrp To i_nrk ActiveWorkbook.Worksheets("Podmiot").Range("D9").Value = i ActiveWorkbook.Worksheets("Podmiot").Range("E11").Value = i_metoda ActiveWorkbook.SaveAs Filename:=Pliki.Range("C4") & "\awn" & i _ & ".xls", FileFormat:=xlExcel8 ActiveWindow.Close 15

4.1.5. Makra modułu Raporty Dim DaneR As String ------------------------------------------------------------------------- Procedura : Raport_RW (uaktywniana przyciskiem w arkuszu "RW" Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-05-28 Zadanie : Aktualizacja tabeli przestawnej "Raport_RW" w arkuszu "RW" dla wybranej grupy awansu zawodowego. Uwagi : ------------------------------------------------------------------------- Sub Raport_RW() On Error GoTo Raport_RW_Error DaneR = "a_" & Range("M2") & "R" MsgBox DaneR ActiveSheet.PivotTables("Raport_RW").ChangePivotCache ActiveWorkbook. _ PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DaneR, _ Version:=xlPivotTableVersion12) ActiveWorkbook.RefreshAll On Error GoTo 0 Exit Sub Raport_RW_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") w Raport_RW" ------------------------------------------------------------------------- Procedura : Raport_RS (uaktywniana przyciskiem w arkuszu "RS" Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-05-28 Zadanie : Aktualizacja tabeli przestawnej "Raport_RS" w arkuszu "RS" dla wybranej grupy awansu zawodowego. Uwagi : ------------------------------------------------------------------------- Sub Raport_RS() On Error GoTo Raport_RS_Error DaneR = "a_" & Range("O2") & "R" MsgBox DaneR ActiveSheet.PivotTables("Raport_RS").ChangePivotCache ActiveWorkbook. _ PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DaneR, _ Version:=xlPivotTableVersion12) ActiveWorkbook.RefreshAll On Error GoTo 0 Exit Sub Raport_RS_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") w Raport_RS" ------------------------------------------------------------------------- 16

Procedura : Raport_jdu (uaktywniana przyciskiem w arkuszu "Rjdu" Autor : Krzysztof Sługocki; Krzysztof.Slugocki@gmail.com Data : 2014-05-28 Zadanie : Aktualizacja tabeli przestawnej "Raport_jdu" w arkuszu "Rjdu" dla wybranej grupy awansu zawodowego. Uwagi : ------------------------------------------------------------------------- Sub Raport_jdu() On Error GoTo Raport_jdu_Error DaneR = "jdu_" & Range("F2") & "R" MsgBox DaneR ActiveSheet.PivotTables("Raport_jdu").ChangePivotCache ActiveWorkbook. _ PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DaneR, _ Version:= xlpivottableversion12) ActiveWorkbook.RefreshAll On Error GoTo 0 Exit Sub Raport_jdu_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") w Raport_jdu" 17