Technologie informacyjne: Excel i VBA

Podobne dokumenty
LibreOffice Calc VBA

Visual Basic for Applications. Wstęp

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

INSTRUKCJA SKOKU GOTO

Technologie informacyjne: Excel i Python

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

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

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

Technologie informacyjne: Arkusz kalkulacyjny

Języki skryptowe w programie Plans

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

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

Zakres tematyczny dotyczący podstaw programowania Microsoft Office Excel za pomocą VBA

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

Aplikacje w środowisku VBA. Visual Basic for Aplications

4.1. Analiza AWN jest dokonywana na poziomie VBA

Automatyzacja pracy w AutoCAD

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

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

Wprowadzenie do programowania w VBA

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

PROGRAMOWANIE MAKR W PROGRAMIE EXCEL W JĘZYKU VISUAL BASIC

Algorytmika i Programowanie VBA 1 - podstawy

Program szkolenia PODSTAWY VBA (VISUAL BASIC FOR APPLICATIONS) I FORMULARZE.

Visual Basic for Application (VBA)

Visual Basic for Application (VBA)

Arkusze kalkulacyjne i VBA

PROGRAMOWANIE MAKR W PROGRAMIE EXCEL W JĘZYKU VISUAL BASIC

3. Podstawy programowania w MS EXCEL

Makra VBA w Excelu dla początkujących

AUTOMATYZACJA PRACY Z UŻYCIEM MAKR. Tom XII NPV WSP.KORELACJI ROZKŁ.EXP JEŻELI COS KOMÓRKA VBA DNI.ROBOCZE ILOCZYN LOG SUMA CZY.

VISUAL BASIC W EXCELU

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

Technologia informacyjna programowanie Janusz Uriasz

Makropolecenia w Excelu

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

Materiały do laboratorium MS ACCESS BASIC

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

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

Maxima i Visual Basic w Excelu

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

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

Losowe wyszukiwanie rozwiązań (VBA)

Przedmiot: Informatyka w inżynierii produkcji Forma: Laboratorium Temat: Zadanie 4. Instrukcja warunkowa.

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

Działki Przygotowanie organizacyjne

Visual Basic for Application (VBA)

Visual Basic dla AutoCAD

VBA praca z makrami w Excelu

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

Wykresy i interfejsy użytkownika

Laboratorium Programowania Kart Elektronicznych

Arkusze kalkulacyjne i VBA

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

Bloki anonimowe w PL/SQL

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

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

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

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

Parę uwag, uzupełnień

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Pętle instrukcje powtórzeo

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

Visual Basic w programie Excel

Kiedy i czy konieczne?

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

Laboratorium Programowania Kart Elektronicznych

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Umieszczanie kodu. kod skryptu

1 Podstawy c++ w pigułce.

VBA praca z makrami w Excelu

PROGRAMOWANIE OBIEKTOWE: VISUAL BASIC VISUAL BASIC FOR APPLICATION (VBA) NA PRZYKŁADZIE EXCELA

Programowanie obiektowe

PODSTAWY VBA Rinat Szepe ( )

Podstawy Programowania C++

PRACA Z FORMULARZAMI UserForm

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

Przedmiot: Informatyka w inżynierii produkcji Forma: Laboratorium Temat: Zadanie 5. MessageBox, InputBox, instrukcja Select Case i instrukcje pętli.

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

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

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

PROGRAMOWANIE W EXCELU W JĘZYKU VISUAL BASIC FOR APPLICATIONS

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.

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

Podstawy informatyki

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.

1 Podstawy c++ w pigułce.

Visual Basic w programie Excel dla Windows

INFORMATYKA OPROGRAMOWANIE KOMPUTEROWE.

Technologie informacyjne

Wstęp do programowania

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 dla Aplikacji

Visual Basic Debugging and Error Handling

Programowanie RAD Delphi

Wstęp do programowania. Różne różności

Transkrypt:

Wrocław, 18.05.2017 Technologie informacyjne: Excel i VBA Wydział Matematyki Politechniki Wrocławskiej Andrzej Giniewicz

Dzisiaj na zajęciach... Makra w pakiecie Excel, część 1: język VBA. 1/41

Co to makra? Makro to zestaw komend, zapisanych do późniejszego wykonania przez pewną aplikację. Zwykle makr używa się w celu automatyzacji czynności często poważanych lub ułatwienia czynności trudnych do wykonania innymi metodami. Makra najczęściej pisane są w skryptowych językach programowania, co przyśpiesza proces ich tworzenia. 2/41

Języki, dialekty, API... Do najpopularniejszych języków służących do pisania makr należą Basic oraz Python. Każda aplikacja, nawet jeśli posługuje się tym samym językiem, może mieć własne API (Application Programming Interface) definiujące sposób komunikacji oraz nazwy funkcji udostępnionych językowi makr przez aplikację. Do tego dochodzą jeszcze różne dialekty języków. Przykładowo w języku Python różnice składniowe biorą się najczęściej z faktu równoległego istnienia wersji 2 oraz 3 języka. Czy to dużo? 3/41

Dialekty Basica Język Basic dziś posiada między innymi dialekty takie, jak: Microsoft Visual Basic.NET, Microsoft Visual Basic for Applications, OpenOffice.org BASIC, LibreOffice.org BASIC, Gambas, FreeBASIC, Monkey X, Xojo, i dziesiątki innych! 4/41

Dialekty Basica Język Basic dziś posiada między innymi dialekty takie, jak: Microsoft Visual Basic.NET, Microsoft Visual Basic for Applications, OpenOffice.org BASIC, LibreOffice.org BASIC, Gambas, FreeBASIC, Monkey X, Xojo, i dziesiątki innych! Uwaga: nie należy mylić trzech różnych języków: Visual Basic (VB), Visual Basic.NET (VB.NET) oraz Visual Basic for Applications (VBA)! 4/41

Najczęściej zadawane pytania (cz. 1) Czy dwa arkusze różnych producentów, których makra korzystają z tego samego języka, mogą otwierać swoje dokumenty nawzajem? 5/41

Najczęściej zadawane pytania (cz. 1) Czy dwa arkusze różnych producentów, których makra korzystają z tego samego języka, mogą otwierać swoje dokumenty nawzajem? Nie, ponieważ mogą występować różnice w dialektach i na pewno będą występować duże różnice w API. 5/41

Najczęściej zadawane pytania (cz. 1) Czy dwa arkusze różnych producentów, których makra korzystają z tego samego języka, mogą otwierać swoje dokumenty nawzajem? Nie, ponieważ mogą występować różnice w dialektach i na pewno będą występować duże różnice w API. Czy makro napisane do arkusza w wersji X będzie działać w wersji X + 1? 5/41

Najczęściej zadawane pytania (cz. 1) Czy dwa arkusze różnych producentów, których makra korzystają z tego samego języka, mogą otwierać swoje dokumenty nawzajem? Nie, ponieważ mogą występować różnice w dialektach i na pewno będą występować duże różnice w API. Czy makro napisane do arkusza w wersji X będzie działać w wersji X + 1? Nie zawsze, ponieważ mogą występować drobne różnice w API. 5/41

Najczęściej zadawane pytania (cz. 2) Czy znajomość Visual Basic for Applications pomaga w napisaniu makra w LibreOffice BASIC? 6/41

Najczęściej zadawane pytania (cz. 2) Czy znajomość Visual Basic for Applications pomaga w napisaniu makra w LibreOffice BASIC? Tak, ale tylko trochę, ponieważ składnia jest ta sama (pętle, funkcje, definicje), ale API jest zupełnie inne. 6/41

Najczęściej zadawane pytania (cz. 2) Czy znajomość Visual Basic for Applications pomaga w napisaniu makra w LibreOffice BASIC? Tak, ale tylko trochę, ponieważ składnia jest ta sama (pętle, funkcje, definicje), ale API jest zupełnie inne. Czy znajomość jednego języka makr pomoże mi pisać makra do tego samego pakietu ale w innym języku? 6/41

Najczęściej zadawane pytania (cz. 2) Czy znajomość Visual Basic for Applications pomaga w napisaniu makra w LibreOffice BASIC? Tak, ale tylko trochę, ponieważ składnia jest ta sama (pętle, funkcje, definicje), ale API jest zupełnie inne. Czy znajomość jednego języka makr pomoże mi pisać makra do tego samego pakietu ale w innym języku? Tak, ale tylko trochę, ponieważ API zwykle wygląda podobnie, ale mogą w nim występować różnice wynikające z ograniczeń składni danego języka. 6/41

Makra w arkuszach kalkulacyjnych Mamy następujące możliwości: Excel Visual Basic for Applications, Python po zainstalowaniu biblioteki xlwings, LibreOffice LibreOffice Basic, Python, JavaScript, BeanShell. 7/41

Makra w arkuszach kalkulacyjnych Mamy następujące możliwości: Excel Visual Basic for Applications, Python po zainstalowaniu biblioteki xlwings, LibreOffice LibreOffice Basic, Python, JavaScript, BeanShell. Dodatkowo możemy komunikować się z arkuszami i tworzyć programy korzystające z ich API (można wtedy wykorzystać niemal dowolny język programowania). 7/41

LibreOffice i OpenOffice.org LibreOffice i OpenOffice wykorzystuje jedno API we wszystkich językach nosi ono nazwę UNO (Universal Network Objects). Oznacza to, że zarazem w Pythonie, Basicu i innych językach znajdziemy te same lub bardzo blisko spokrewnione nazwy funkcji oraz typy danych. 8/41

LibreOffice i OpenOffice.org LibreOffice i OpenOffice wykorzystuje jedno API we wszystkich językach nosi ono nazwę UNO (Universal Network Objects). Oznacza to, że zarazem w Pythonie, Basicu i innych językach znajdziemy te same lub bardzo blisko spokrewnione nazwy funkcji oraz typy danych. Niestety za uniwersalność tą płaci się tym, że przykładowo w Pythonie nie ma możliwości skorzystania z wielu udogodnień, jakie daje ten język, ponieważ API musi dać się wyrazić na innych językach, które tych możliwości nie dają. Istnieją alternatywne API korzystające z UNO, takie jak dostępne w bibliotekach oosheet lub pyoo. 8/41

Język Visual Basic for Applications Język Visual Basic for Applications 9/41

Visual Basic for Applications jest dialektem języka Basic, wzbogaconym między innymi o właściwości i metody dotyczące obiektów pakietu Office. Język programowania wraz ze środowiskiem programistycznym dostępny jest w programie Excel od wersji 5.0. Jest to język umożliwiający automatyzację wszystkich czynności, które możemy wykonać ręcznie w programie Excel. Język Visual Basic for Applications 10/41

Typy danych Boolean typ logiczny, przyjmujący dwie wartości: True oraz False, Integer typ liczbowy całkowity, Long typ liczbowy całkowity długi, Double typ liczbowy zmiennoprzecinkowy, Date typ daty, String typ tekstowy, Variant oznacza każdy dopuszczalny typ, jednak zmienna zajmuje dużo miejsca w pamięci i trudniej z niej korzystać. Język Visual Basic for Applications 11/41

Komentarze i długie linie zaczynamy od apostrofu REM tak też można długa linia _ ciąg dalszy długiej linii Język Visual Basic for Applications 12/41

Definicja zmiennych Option Explicit Dim nazwa As Typ Dim nazwa1 As Typ1, nazwa2 As Typ2 Język Visual Basic for Applications 13/41

Podstawianie wartości nazwa = wartość Set referencja = obiekt Set referencja = Nothing Język Visual Basic for Applications 14/41

Tablice Dim tablica1(n) As Typ tablica1(1) = wartość... tablica1(n) = wartość Dim tablica2() As String tablica2 = Split("w1,w2,w3", ",") ReDim tablica(nowy_rozmiar) ReDim Preserve tablica(nowy_rozmiar) Język Visual Basic for Applications 15/41

Instrukcje warunkowe If warunek1 Then instrukcja, gdy warunek1 jest spełniony ElseIf warunek2 Then instrukcja, gdy warunek2 jest spełniony Else instrukcja, gdy żaden warunek nie jest spełniony End If Język Visual Basic for Applications 16/41

Instrukcje wyboru Select Case zmienna Case przypadek1 instrukcja Case przypadek2: instrukcja Case przypadek3, przypadek4, liczba To liczba instrukcja Case Else w przeciwnym przypadku End Select Język Visual Basic for Applications 17/41

Pętla For For licznik = początek To koniec Step krok instrukcja pętli (co krok) Continue For Next licznik For licznik = początek To koniec instrukcja pętli (co jeden) Exit For Next licznik Język Visual Basic for Applications 18/41

Pętla For Each For Each element In grupa instrukcja pętli (co jeden) Exit For/Continue For Next element Język Visual Basic for Applications 19/41

Pętle warunkowe Do While warunek instrukcje Continue Do Loop Do instrukcje Exit Do Loop While warunek Język Visual Basic for Applications 20/41

Pętle warunkowe Do Until warunek instrukcje Exit Do Continue Do Loop Do instrukcje Loop Until warunek Język Visual Basic for Applications 21/41

Funkcje i procedury Sub nazwa(arg1 As Typ1, arg2 As Typ2,...) kod End Sub Function nazwa(...) As TypReturn kod nazwa = wartość End Function Język Visual Basic for Applications 22/41

Wywoływanie i dostęp do pól funkcja_lub_procedura(...) x = obiekt.pole obiekt.pole = x obiekt.metoda_bezargumentowa obiekt.metoda(...) With obiekt.pole1 = x1.pole2 = x2.metoda(...) End With Język Visual Basic for Applications 23/41

Podstawy obsługi błędów On Error Resume Next On Error GoTo 0 Język Visual Basic for Applications 24/41

Praca z napisami długość = Len(napis) kawałek = Mid(napis, od_miejsca) kawałek = Mid(napis, od_miejsca, ile_znaków) kawałek = Left(napis, ile_znaków) kawałek = Right(napis, ile_znaków) napis_bez_spacji_po_bokach = Trim(napis) Mid(napis, od_miejsca) = podstaw Mid(napis, od_miejsca, ile_znaków) = podstaw Język Visual Basic for Applications 25/41

Obiekty pakietu Excel Obiekty pakietu Excel 26/41

Nawiązanie połączenia Nawiązywanie połączenia odbywa się poprzez użycie klasy Workbooks Obiekty pakietu Excel 27/41

Nawiązanie połączenia Nawiązywanie połączenia odbywa się poprzez użycie klasy Workbooks: Workbooks.Add tworzy nowy skoroszyt, ActiveWorkbook łączy się z aktywnym skoroszytem, Workbooks.open("ścieżka") łączy się z istniejącym, nieotwartym, zapisanym skoroszytem, Obiekty pakietu Excel 27/41

Ustawienia aplikacji W makrze możemy również konfigurować ustawienia aplikacji, czyli programu Excel. Application.DisplayAlerts ustawienie wyświetlania komunikatów ostrzegawczych, domyślnie ma wartość True, Application.ScreenUpdating odświeżanie ekranu podczas wykonywania makra, domyślnie ma wartość True. Obiekty pakietu Excel 28/41

Typowe makro Excel Sub nazwa() Dim Wb As Workbook Set Wb = ActiveWorkbook # kod End Sub Obiekty pakietu Excel 29/41

Typowe makro Formuła Function nazwa(...) As Typ # kod nazwa = wynik End Function Obiekty pakietu Excel 30/41

Arkusze Do operacji na arkuszach służy klasa Worksheets. Wb.Worksheets("nazwa") wybiera arkusz o zadanej nazwie, Wb.Worksheets(1) wybiera arkusz o zadanym numerze, Wb.Worksheets(...).Activate aktywuje arkusz, Wb.Worksheets(...).Delete kasuje arkusz (zgłasza wyjątek, gdy arkusz nie istnieje), Wb.Worksheets(...).Name pozwala sprawdzić lub ustawić nazwę, Wb.Worksheets(...).Cells.Clear czyście zawartość i formatowanie arkusza, Wb.Worksheets.Add().Name = nazwa tworzy nowy arkusz. Obiekty pakietu Excel 31/41

Zakresy Do operacji na zakresach służą klasy Range oraz Cells wywoływane na rzecz obiektu Worksheet wybranego przez Worksheets..Range( A1 ) wybiera komórkę A1 aktywnego arkusza,.cells(1, 1) wybiera komórkę A1 aktywnego arkusza,.range(cells(1, 1), Cells(3, 5)) wybiera zakres aktywnego arkusza,.rows(1) wybiera wiersz,.rows("2:4") wybiera zakres wierszy,.columns("c:f") wybiera zakres kolumn. zakres.currentregion pozwala rozszerzyć zaznaczenie. Obiekty pakietu Excel 32/41

Zakresy Do operacji na zakresach służą klasy Range oraz Cells wywoływane na rzecz obiektu Worksheet wybranego przez Worksheets..Range( A1 ) wybiera komórkę A1 aktywnego arkusza,.cells(1, 1) wybiera komórkę A1 aktywnego arkusza,.range(cells(1, 1), Cells(3, 5)) wybiera zakres aktywnego arkusza,.rows(1) wybiera wiersz,.rows("2:4") wybiera zakres wierszy,.columns("c:f") wybiera zakres kolumn. zakres.currentregion pozwala rozszerzyć zaznaczenie. komórkę.offset(1, 1) pozwala przesunąć wybór komórki o zadaną liczbę wierszy i kolumn. Obiekty pakietu Excel 32/41

Co z zakresem? Z zakresu możemy wyciągnąć lub wstawić dane: zakres.value wyciąga wartości, zakres.value = x podstawia wartości. Value jest polem domyślnym dla zakresu, dlatego może być pominięte. Obiekty pakietu Excel 33/41

Co z zakresem? Z zakresu możemy wyciągnąć lub wstawić dane: zakres.value wyciąga wartości, zakres.value = x podstawia wartości. Value jest polem domyślnym dla zakresu, dlatego może być pominięte. Mamy również: zakres.rows.count zlicza liczbę wierszy w zakresie. zakres.columns.count zlicza liczbę kolumn w zakresie. zakres.cells.count zlicza liczbę komórek w zakresie. Obiekty pakietu Excel 33/41

Makro Makro 34/41

Analiza makra Option Explicit Function Str2Date(ByVal dts As String, _ Optional ByVal dtsep As String = ".") As Date Dim idx1 As Integer, idx2 As Integer idx1 = InStr(1, dts, dtsep) idx2 = InStr(idx1 + 1, dts, dtsep) Str2Date = DateSerial( _ Mid(dts, idx2 + 1), _ Mid(dts, idx1 + 1, idx2 - idx1-1), _ Left(dts, idx1-1)) End Function Makro 35/41

Analiza makra Sub clean_data() Dim output As String Dim table As Variant Dim Wb As Workbook Dim i As Integer output = "KlientC" Set Wb = Application.ActiveWorkbook Makro 36/41

Analiza makra On Error Resume Next Application.DisplayAlerts = False Wb.Worksheets(output).Delete Application.DisplayAlerts = True On Error GoTo 0 Wb.Worksheets.Add(After:=Wb.Worksheets( _ Wb.Worksheets.Count)).Name = output Makro 37/41

Analiza makra Wb.Worksheets(output).Cells(1, 1) = "Imię" Wb.Worksheets(output).Cells(1, 2) = "Nazwisko" Wb.Worksheets(output).Cells(1, 3) = "Data" Wb.Worksheets(output).Cells(1, 4) = "Numer" Wb.Worksheets(output).Range("A1:D1").Interior.Color = _ RGB(150, 150, 150) table = Wb.Worksheets("Klient").Range("A1"). _ CurrentRegion Makro 38/41

Analiza makra For i = 2 To UBound(table) Wb.Worksheets(output).Cells(i, 1) = _ StrConv(Trim(Left(table(i, 1), _ InStr(1, table(i, 1), " "))), vbpropercase) Wb.Worksheets(output).Cells(i, 2) = _ StrConv(Trim(Mid(table(i, 1), _ InStr(1, table(i, 1), " "))), vbpropercase) Wb.Worksheets(output).Cells(i, 3) = _ Str2Date(table(i, 2), "-") Wb.Worksheets(output).Cells(i, 4) = _ table(i, 3) Next i Wb.Worksheets(output).Range("A1").CurrentRegion _.Columns.AutoFit Makro 39/41

W następnym odcinku... Makra w Pythonie Makro 40/41

Pytania? Makro 41/41