Integracja Systemów Sterowania. VBA Visual Basic for Applications



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

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

LibreOffice Calc VBA

Aplikacje w środowisku VBA. Visual Basic for Aplications

Algorytmika i Programowanie VBA 1 - podstawy

INSTRUKCJA SKOKU GOTO

Visual Basic for Applications. Wstęp

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

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

Technologie informacyjne: Excel i VBA

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

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

VISUAL BASIC W EXCELU

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

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

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

Visual Basic w programie Excel

Automatyzacja pracy w AutoCAD

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

PROGRAMOWANIE MAKR W PROGRAMIE EXCEL W JĘZYKU VISUAL BASIC

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

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

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.

Technologia informacyjna programowanie Janusz Uriasz

Visual Basic for Applications. Formatki tworzenie,

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

Wprowadzenie do programowania w VBA

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

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

Makra VBA w Excelu dla początkujących

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

Języki skryptowe w programie Plans

Tablice, DataGridView

VBA praca z makrami w Excelu

3. Podstawy programowania w MS EXCEL

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

Visual Basic dla AutoCAD

Materiały do laboratorium MS ACCESS BASIC

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

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

PRACA Z FORMULARZAMI UserForm

Przygotowanie własnej procedury... 3 Instrukcja msgbox wyświetlanie informacji w oknie... 6 Sposoby uruchamiania makra... 8

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium przyrządów wirtualnych. Ćwiczenie 3

Programowanie obiektowe

Zastanawiałeś się może, dlaczego Twój współpracownik,

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Podstawy informatyki

Tablice. Jones Stygar na tropie zmiennych

Arkusze kalkulacyjne i VBA

4.1. Analiza AWN jest dokonywana na poziomie VBA

Laboratorium Programowania Kart Elektronicznych

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

VBA praca z makrami w Excelu

Dodanie nowej formy do projektu polega na:

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

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.

PROGRAMOWANIE MAKR W PROGRAMIE EXCEL W JĘZYKU VISUAL BASIC

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

Technologie informacyjne

Arkusze kalkulacyjne i VBA

Laboratorium Programowania Kart Elektronicznych

Tworzenie Stron Internetowych. odcinek 10

Technologia Informacyjna. Michał Pazdanowski

Tworzenie aplikacji Windows Serwery automatyzacji OLE

Visual Basic dla Aplikacji

Kiedy i czy konieczne?

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

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};

Visual Basic for Application (VBA)

Visual Basic for Application (VBA)

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

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Elektroenergetyki Technologie informatyczne

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Parę uwag, uzupełnień

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie obiektowe zastosowanie języka Java SE

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

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

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

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

Ćwiczenie 1 Obsługa makr

PROGRAMOWANIE W EXCELU W JĘZYKU VISUAL BASIC FOR APPLICATIONS

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

Programowanie RAD Delphi

Visual Basic Debugging and Error Handling

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Komunikator internetowy w C#

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

Programowanie obiektowe

TEMAT: SPOSOBY ADRESOWANIA W

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

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

Platformy Programistyczne Podstawy języka Java

Maxima i Visual Basic w Excelu

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

Transkrypt:

Visual Basic for Applications 1

na przykładzie MS-Excel Alt+F11 i jest cała góra lodowa 2

Decyzja o włączeniu/wyłączeniu makr w menu Narzędzia/Makro/Zabezpieczenia Wbudowany język wielu aplikacji Excel, Word ale i ifix Renesans po latach zapomnienia języka BASIC (Beginner s All-purpose Symbolic Instruction Code) Niezbędne zrozumienie obiektowego modelu aplikacji. Klasy obiektów tworzą strukturę hierarchiczną. Identyczne obiekty tworzą kolekcje. Występują metody, własności i zdarzenia. 3

Obiektowy model Excel-a (F2 Object Browser) -to mały fragment (vbaxl9.chm) Application.Workbooks( Zeszyt1 ).Worksheets( Arkusz1 ).Range( A1 ) Workbooks(1).Worksheets(1).Range( A1 ) 4

5

6

7

Option Explicit WYMUSZA DEKLARACJE ZMIENNYCH Sub Test1() Dim Msg As String ZAWSZE PODAWAC TYP ZMIENNYCH Dim LObj As Object Msg = "User name: " + Application.UserName + vbcrlf + _ "Active workbook name: " + Application.ActiveWorkbook.Name + vbcrlf + _ "Active worksheet name: " + Application.ActiveWorkbook.ActiveSheet.Name MsgBox (Msg) Msg = "Worksheet names: " For Each LObj In Application.ActiveWorkbook.Sheets Msg = Msg + LObj.Name & " " Next MsgBox (Msg) End Sub 8

Rejestracja i podgląd makr wygodną metodą podglądania szczegółów 9

Odwołanie do kaŝdej komórki to odwołanie do obiektu typu Range NajwaŜniejsza (i domyślna) własność obiektu Range to Value Sub Test3() Worksheets(1).Range("A1:C3").Clear Worksheets(1).Range("A1:A3").Value = 13 Worksheets(1).Range("B1:B3").Value = Worksheets(1).Range("A1") + 2 Worksheets(1).Range("C1") = Worksheets(1).Range("B1") + 20 End Sub 10

Range( A1:C5 ) równowaŝne Range( A1, C5 ) Range( C1:C10 A6:E6 ) spacja jest operatorem przecięcia zakresów więc jest to C6 Range( A1, A3, A5, A7 ) przecinek operatorem łączenia zakresów ActiveSheet.Cells(3,4) = 7 odwołanie do komórki za pomocą numeru wiersza i kolumny Offset jest własnością stosowaną do obiektu Range np. ActiveCell.Offset(-1,0) = 1 (wstawia powyŝej aktualnej komórki wartość 1) UŜyteczne właściwości obiektu Application: ActiveCell aktywna komórka ActiveSheet aktywny arkusz ActiveWindow aktywne okno, ActiveWorkbook aktywny skoroszyt, RangeSelection zaznaczone komórki, Selection zaznaczony obiekt, ThisWorkbook skoroszyt zawierający procedurę 11

Komentarz za pomocą apostrofu (lub słowo kluczowe Rem) Kontynuacja linii: spacja, a po niej znak podkreślenia Instrukcje w jednej linii oddzielone znakiem dwukropka Wielkość liter w nazwach zmiennych nie ma znaczenia Format daty to np. #11/12/02# a czasu to #12:00:00# samodzielnie ustala typ zmiennej jednak kosztem czasu wykonania. Typ zmienny i ustalany przez to Variant Popularne typy to: Byte, Boolean, Integer (%), Long (&), Single (!), Double (#), Currency (@), Date, Object, String ($), Variant (w nawiasie typ definiowany domyślnie) Dim i As Integer, r As Double Dim ii% Funkcja TypeName zwraca nazwę typu zmiennej 12

Zakres zmiennych: procedura: Dim, Static, Private wewnątrz procedury moduł: Dim przed pierwszą procedurą modułu wszystkie moduły: Public przed pierwszą procedurą Static zachowuje wartość po wykonaniu procedury Tablice: indeksy domyślnie startują od 0 (Option Base 0) Dim Tab1(10 To 20) As Integer Dim Tab2(1 To 10, 10 To 20) As Integer Zmienne obiektowe reprezentują cały obiekt. Przypisanie do zmiennej obiektowej odbywa się za pomocą instrukcji Set Typ danych uŝytkownika: Type NewType1 Field1 As String * 25 string max. 25 znaków Field2 As Integer Field3 As Long End Type 13

Listę funkcji wbudowanych w uzyskuje się poprzez wpisanie w kodzie vba. w edytorze Funkcje Excel-a mogą być uŝyte w kodzie Application.WorksheetFunction.FunctionName np. Application.WorksheetFunction.Roman 14

Odwołania do elementów obiektów (Test7 szybsze w wykonaniu od Test8) Sub Test7() Range("A1:C3").Select With Selection.Font.Name = "Times New Roman".Size = 10.Bold = True Sub Test8() Range("A1:C3").Select Selection.Font.Name = "Times New Roman" Selection.Font.Size = 10 Selection.Font.Bold = True End Sub End With End Sub 15

Kolekcje obiektów For Each element In grupa... [Exit For]... Next [element] Sub Test9() Dim Cell As Range Range("A1:C3").Select For Each Cell In Selection Cell.Value = UCase(Cell.Value) Next Cell End Sub 16

Sterowanie wykonaniem programu GoTo GoTo etykieta... etykieta: IIf IIf( cond, ret_val_true, ret_val_false) If-Then If cond1 Then... ElseIf condn Then... Else... End If Case Select Case expr_to_test [ Case expr_n [instr_n]] [Case Else [instr_else]] End case 17

Sub Test10() ' Przeliczanie procentowych punktów na ocenę Dim Punkty As Integer Dim OcenaStr As String, OcenaNum As Single Punkty = InputBox("Punkty [%]: ", "Punkty->Ocena") Select Case Punkty Case Is < 50: OcenaStr = "ndost": OcenaNum = 2 Case 50 To 59: OcenaStr = "dost": OcenaNum = 3 Case 60 To 69: OcenaStr = "+dost": OcenaNum = 3.5 Case 70 To 79: OcenaStr = "db": OcenaNum = 4 Case 80 To 89: OcenaStr = "+db": OcenaNum = 4.5 Case 90 To 100: OcenaStr = "bdb": OcenaNum = 5 End Select MsgBox Punkty & "% punktow odpowiada ocenie " & OcenaStr & _ " (" & OcenaNum & ")" End Sub 18

For-Next For counter=beg_value To end_value [Step step_value]... [Exit For]... Next [counter] Do-While (dopóki spełniony warunek) Do [While condition]... [Exit Do]... Loop Do-Until (dotąd, aŝ będzie spełniony warunek) Do [Until condition]... [Exit Do]... Loop Do... [Exit Do]... Loop [While condition] Do... [Exit Do]... Loop [Until condition] 19

Argumenty w metodzie umieszczone po nazwie metody oddzielone przecinkami; ewentualnie w dowolnej kolejności gdy uŝyte z nazwą argumentu MsgBox "MsgBox 1",, "My Title" MsgBox "MsgBox 2", Title:="My Title" Argumenty w przypadku własności umieszcza się w nawiasach okrągłych Przykład automatycznego tworzenia wykresów (na podstawie generatora makr) Private Sub SaveAsGIF_Click() Sheets("WykresCO").Export Filename:="C:\CO.GIF", FilterName:="GIF" End Sub 20

Private Sub CreateChart_Click() Charts.Add ActiveChart.ChartType = xlxyscatterlinesnomarkers ActiveChart.SetSourceData Source:=Sheets("Wykres").Range("A1:F8895"), _ PlotBy :=xlcolumns ActiveChart.SeriesCollection(1).Name = "=Wykres!R1C2" ActiveChart.SeriesCollection(2).Name = "=Wykres!R1C3" ActiveChart.SeriesCollection(3).Name = "=Wykres!R1C4" ActiveChart.SeriesCollection(4).Name = "=Wykres!R1C5" ActiveChart.SeriesCollection(5).Name = "=Wykres!R1C6" ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="WykresCO" With ActiveChart.HasTitle = True.ChartTitle.Characters.Text = "Praca instalacji CO".Axes(xlCategory, xlprimary).hastitle = True.Axes(xlCategory, xlprimary).axistitle.characters.text = "Czas".Axes(xlValue, xlprimary).hastitle = True.Axes(xlValue, xlprimary).axistitle.characters.text = "Temperatura" End With With ActiveChart.Axes(xlCategory).HasMajorGridlines = True.HasMinorGridlines = False End With With ActiveChart.Axes(xlValue).HasMajorGridlines = True.HasMinorGridlines = False End With CONTINUE... CONTINUED... ActiveChart.HasLegend = True ActiveChart.Legend.Select Selection.Position = xlbottom ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone, _ LegendKey:=False ActiveChart.Axes(xlValue).Select With ActiveChart.Axes(xlValue).MinimumScaleIsAuto = True.MaximumScaleIsAuto = True.MinorUnitIsAuto = True.MajorUnitIsAuto = True.Crosses = xlcustom.crossesat = -20.ReversePlotOrder = False.ScaleType = xllinear.displayunit = xlnone End With ActiveChart.Axes(xlCategory).Select End Sub 21

Kontrolki ActiveX Kontrolki ActiveX (zwane kontrolkami OLE lub kontrolkami OCX) są komponentami (obiektami), które mogą zostać włoŝone w strony WWW lub wykorzystane przez aplikacje (w systemach operacyjnych Windows). Celem wykorzystanie funkcjonalności kontrolek (ang. reusebility) Zaprojektowanie pierwotnie dla stron WWW mogą być równieŝ wykorzystane w aplikacjach uŝytkownika (w odróŝnieniu od apletów Javy) Kontrolki wykorzystywane są przez kontenery ActiveX. Zachowują się jak serwery wewnątrz kontenera Dostępne tysiące kontrolek o róŝnej funkcjonalności. Budowa aplikacji kontenera ActiveX przypomina składania z cegieł budowa z wykorzystaniem binarnych elementów funkcjonalnych Kontrolki rejestruje się w systemie (regsvr32.exe) Tworzenie kontrolek nie jest zaleŝne od języka programowania Dla kaŝdej kontrolki istotne jej właściwości, metody i zdarzenia (notyfikacje) 22

Kontrolki ActiveX Kontrolka NumLED wyświetlanie informacji Opcja menu Wstaw/Obiekt Opcja menu Widok/Paski narzędzi/przybornik formantów/tryb projektowania włoŝenie kontrolki i edycję właściwości 23

Kontrolki ActiveX przykład uŝycia Akcje związane z klawiszami Private Sub DigitsM_Click() NumLED1.Digits = NumLED1.Digits - 1 End Sub Private Sub DigitsP_Click() NumLED1.Digits = NumLED1.Digits + 1 End Sub Private Sub ValueM_Click() NumLED1.Value = NumLED1.Value - 1 End Sub Private Sub ValueP_Click() NumLED1.Value = NumLED1.Value + 1 End Sub Private Sub PropertyPages_Click() NumLED1.ShowPropertyPage End Sub 24

Kontrolki ActiveX przykłady 25

Kontrolki ActiveX przykłady 26

Kontrolki ActiveX kontrolka LED firmy Global Magic Software PROPERTIES: AutoRedraw HelpContextID* OutlineWidth AutoSize Index* SingleBuffer BackColor LEDHeight StyleID BackPicture LEDIndex StyleOffColor BevelInner LEDSeparation StyleOffPicture BevelOuter LEDStatus StyleOnColor BevelWidth LEDStyleID StyleOnPicture BorderHorizontal LEDWidth Styles BorderVertical Left* StyleShape BorderWidth MaxDecay StyleUserShape DataField* Mode TabIndex* DataSource* MouseControl TabStop* DecayRate Name* Tag* Direction NumLEDs ToolTipText* DragIcon* Orientation Top* DragMode* Outline Value Enabled* OutlineAlign Visible* FocusOutline OutlineColor WhatsThisHelpID* Height* OutlineTitle Width* * denotes Standard Properties EVENTS: Change Click* DblClick* KeyDown* KeyPress* KeyUp* MouseDown* MouseMove* MouseUp* * denotes Standard Event METHODS: Redraw RedrawStatic ShowPropertyPage 27

Kontrolki ActiveX kontrolka LED firmy Global Magic Software (przykład opisu właściwości) Orientation Property DESCRIPTION Determines whether the control is displayed horizontally or vertically. SYNTAX Visual Basic: control.orientation [= number ] C/C++: void control.setorientation(short number); short control.getorientation(); Delphi: control.orientation [:= number ]; SETTINGS VALUE DESCRIPTION 0 Horizontal 1 Vertical REMARKS The Direction property may be used to alter the fill direction of the control. DATA TYPE Integer 28

Kontrolki ActiveX Private Sub SendSMS_Click() Dim objnewmail As Object Dim strfrom As String, strto As String, strbody As String Set objnewmail = CreateObject("CDONTS.NewMail") strfrom = Range("C4").Value strto = CStr(Range("C3").Value) + "@text.plusgsm.pl" strbody = Range("C5").Value continue continued objnewmail.from = strfrom objnewmail.to = strto objnewmail.body = strbody Debug.Print "Send: " + strto + " " + strbody objnewmail.send Set objnewmail = Nothing End Sub 29

Kontrolki ActiveX kontrolka CDONTS CDONTS Collaborative Data Objects for NT Server oferuje usługi e-mail; instalowany w ramach IIS lub PWS; wymaga serwera SMTP (Simple Mail Transfer Protocol) WŁAŚCIWOŚCI: Bcc, Body, BodyFormat (0-tekst, 1-HTML), Cc, ContenetBase (URL względem którego odwołania np. do grafiki), ContentLocation (połoŝenie zasobu względem ContentBase), From, Importance (0d 0 do 3), MailFormat (kodowanie: 1-tekst, 0-MIME (Multipurpose Internet Mail Extension) np. do wysyłania grafiki), Subject, To, Value (dodaje nagłówek wiadomości), Version (zwraca wersję CDO) METODY: AttacheFile, AttacheURL, Send, SetLocaleIDs (wysyła informacje dotyczące ustawień regionalnych) 30

Kontrolki ActiveX kontrolka MSINET Dostęp do danych na serwerach HTTP oraz FTP Metoda OpenURL zwraca stronę z serwera WWW Private Sub CommandButton1_Click() Dim INetCtrl As Object Dim ret As String ' Msinet.ocx control Set INetCtrl = CreateObject("InetCtls.Inet.1") ret = INetCtrl.OpenURL("http://127.0.0.1/phpinfo.php") Range("A1") = ret Set INetCtrl = Nothing End Sub 31

Proficy ifix a KAśDA operacja wykonywana w GUI ifix moŝe zostać zrealizowana programowo Programowy interfejs zawiera WIĘCEJ moŝliwości niŝ GUI!!! Niektóre funkcje GUI niejawnie automatycznie generują skrypty 32

Proficy ifix a System pomocy dostępny z menu Help / ifix Automaton Pomoc w 33

Skrypty 34

Skrypty Private Sub MinusMinus_Click() Dim lvalue As Variant lvalue = ReadValue("SET_RH_VEL.F_CV") lvalue = CInt(lValue) - 60 WriteValue CStr(lValue), "SET_RH_VEL.F_CV" End Sub Private Sub PlusPlus_Click() Dim lvalue As Variant lvalue = ReadValue("SET_RH_VEL.F_CV") lvalue = CInt(lValue) + 60 WriteValue CStr(lValue), "SET_RH_VEL.F_CV" End Sub W skrypcie dostępne kaŝde działanie takie jak moŝliwe do wykonania przez operatora oraz wiele, wiele więcej 35

Literatura: 1. Walkenbach J.: Programowanie Excel 2000 Visual Basic, Oficyna Wydawnicza READ ME, Łódź, 2000. 2. Microsoft Developer Network. 3. System pomocy programu Excel. 4. vbaxl9.chm plik pomocy Microsoft Office. 5. Freeze W.: Visual Basic 6. Programowanie baz danych, Wydawnictwo HELION, Gliwice, 2001. 6. Reselman B.: Active Server Pages 3.0 w przykładach, Wydawnictwo MIKOM, Warszawa, 2001. 7. Developing Applications for the Internet and World Wide Web. MSDN. 36