Movatterモバイル変換


[0]ホーム

URL:


Przejdź do zawartości
Wikipediawolna encyklopedia
Szukaj

Visual Basic for Applications

Z Wikipedii, wolnej encyklopedii

Visual Basic for Applications (VBA) –język programowania oparty naVisual Basicu (VB) zaimplementowany waplikacjach pakietuMicrosoft Office oraz kilku innych, jak na przykładAutoCAD iWordPerfect. Ta uproszczona wersja Visual Basica służy przede wszystkim doautomatyzacji pracy z dokumentami, na przykład poprzezmakropolecenia.

Podstawową różnicą między VBA a VB jest to, że VBA nie pozwala na tworzenie samodzielnychskompilowanych aplikacji typu EXE.Kod programu napisanego w VBA zawsze zawarty jest w dokumencie utworzonym przy pomocy programu obsługującego VBA - na przykład w pliku*.DOCX edytoraMS Word lub pliku *.XLS/XLSM arkuszaMS Excel. Program taki wymaga zatemśrodowiska uruchomieniowego, którym jest zainstalowana na komputerze aplikacja obsługująca dany dokument.

Wyjątkiem symulującym samodzielnie działające aplikacje są pliki utworzone w programieMicrosoft Access, które — przy zakupie rozszerzeniaMicrosoft Office Developer lub innego[1] — pozwalają na uruchamianie plikówAccessa na dowolnej liczbie komputerów w tzw.Microsoft Access Runtime, bez konieczności wyposażania każdego pojedynczego komputera w pełny pakietMicrosoft Office.

Od wersji 2000 pakietMicrosoft Office został wyposażony w oddzielny EdytorVisual Basic, dobrze znany programistomVisual Basic 6.0, co znacznie ułatwia pracę z kodem. W wersji 2000 dodano także możliwość współpracy programuMicrosoft Access z bazą danychMicrosoft SQL Server w architekturzeklient-serwer.

Przykłady programów

[edytuj |edytuj kod]

Przed rozpoczęciem pisania programu w Edytorze VBA (uruchamianym poprzez wciśnięcieAlt+F11), należy dodać dodatek Solver jako odwołanie do VBA (jeżeli będziemy z niego korzystali). W tym celu należy wybrać w EdytorzeTools → References i zaznaczyć Solvera. Jeżeli go tam nie ma, to należy go odnaleźć w katalogu zawierającym Office poprzez guzikBrowse.

Pisanie makra rozpoczynamy, klikając prawym przyciskiem w dowolnym miejscu w oknie VBAProject (zwykle na górze po lewej stronie) i z menu wybierającInsert → Module. Jest to o tyle ważne, że makra napisane nie w „Modules” tylko „Microsoft Excel Objects” nie będą działały. Po wstawieniu nowego modułu, po prawej stronie pojawia się puste pole edycji, w którym możemy zacząć pisać swój program. Poniżej znajduje się kilka przykładów, które powinny pomóc zrozumieć składnię VBA. Poniższe przykłady można skopiować i bezpośrednio wstawić do modułu. Makro uruchamia się poprzez kliknięcie na zielony znakRun (lubklawiszF5).

Przykładowy program napisany w VBA:

Subproba()DimiAsInteger'deklaracja zmiennej - nie jest wymagana w VBAFori=1To10'uruchomienie petli - 10 powtórzeńCells(i,1)=i^2'wypelnienie komórki wartością po prawej stronie znaku równa sięNexti'zwiększenie i o jedenEndSub'zakończenie makra

Ten prosty program wstawia do komórek z zakresu „A1:A10” kwadraty kolejnychliczb naturalnych (od 1 do 10)

Przy pomocy VBA można także deklarować funkcje użytkownika. Poniższy program wprowadzi funkcję, która jako argument przyjmuje liczbę naturalną (n), a zwraca sumę ciągu arytmetycznego, gdzie pierwszy wyraz to 1, ostatni ton, a różnica ciągu to 1.

Functionaryt(nAsInteger)AsIntegerDimi,wartoscAsInteger'deklaracja zmiennychwartosc=0'przypisanie wartości zero zmiennej wartoscFori=1Ton'uruchomienie pętliwartosc=wartosc+i'zwiększenie zmiennej wartosc o iNexti'zwiększenie i o jedenaryt=wartosc'przypisanie zmiennej wyjściowej wartości zawartej w zmiennej wartośćEndFunction

Poniżej znajduje się bardziej skomplikowany program, którego celem jest pokazanie jak:

  • wpisywać formuły (a nie wartości) do arkusza przy pomocy VBA
  • dokonywać operacji na kolumnach (np. zmiana szerokości)
  • uruchomić Tabelę Danych z poziomu VBA
  • wstawić wykres
  • uruchomić Solvera z poziomu VBA
  • jakie słabości ma Solver

Pierwsza część programu tworzy funkcję celu (sinusoida z trendem wzrostowym) oraz warunek ograniczający w postaci ujemnie nachylonej prostej (dopuszczalne rozwiązania znajdą się pod prostą).Następnie będę chciał przedstawić na wykresie funkcję celu i warunek ograniczający. W tym celu zbuduję Tabelę Danych i na jej podstawie narysuję wykres. Na koniec rozwiążę zadanie maksymalizacji funkcji celu przy zadanym warunku ograniczającym. Okaże się, że Solver znajduje maksimum w punkciex=2,094 (f=1,91). Z wykresu wynika jednak, że jest to maksimum lokalne. Dlatego żeby znaleźć maksimum globalne, trzeba rozpocząć poszukiwanie od np.x=5. Wtedy okaże się, że maksimum funkcji jest wx=7,54 (f=4,72). VBA może być więc przydatne w poszukiwaniu maksimów globalnych, ponieważ można wprowadzić np. pętlę, która będzie rozwiązywała zadanie optymalizacji wiele razy, startując z różnych punktów.

Subskomplikowany_program()''''stworzenie funkcji celu i wzoru na prostą ograniczającą'''Range("b1")="cel"Range("b2").Formula="=sin("&Cells(2,3).Address&")+ 1/2*"&Cells(2,3).AddressRange("c1")="x="Range("a4")="prosta"Range("b4").Formula="=-0.7*"&Cells(2,3).Address&"+10"''''stworzenie formuły, która będzie wykorzystywana przez Solvera jak warunek ograniczający'''Range("a6")="warunek"Range("b5").Formula="="&Range("b2").Address&"-"&Range("b4").AddressRange("c5")="<"Range("d5")=0''''stworzenie "pierwszej" kolumny Tabeli Danych (a więc x=0, x=0.2, x=0.4 ... x=10)'''Cells(10,1)=0Fori=1To50Cells(i+10,1)=Cells(i+9,1)+0.2Nexti''''zmiana szerokości kolumny'''Columns(2).ColumnWidth=12''''dodanie tekstu i formuły w nagłówku "drugiej" kolumny Tabeli Danych'''Range("b8")="funkcja celu"Range("b9").Formula="="&Range("b2").Address''''dodanie tekstu i formuły w nagłówku "trzeciej" kolumny Tabeli Danych'''Range("c8")="prosta"Range("c9").Formula="="&Range("b4").Address''''stworzenie Tabeli Danych na podstawie 3 kolumn'''Range(Cells(9,1),Cells(60,3)).Tablecolumninput:=Range("c2")''''stworzenie wykresu na podstawie Tabeli Danych'''Charts.AddActiveChart.ChartType=xlXYScatterSmoothNoMarkersActiveChart.SetSourceDataSource:=Sheets("Arkusz1").Range("A10:C60"),PlotBy_:=xlColumnsActiveChart.LocationWhere:=xlLocationAsObject,Name:="Arkusz1"ActiveChart.SeriesCollection(2).Select''''wprowadzenie zadania optymalizacji do Solvera - maksymalizacja B2 poprzez zmianę C2'''solverresetsolveroksetcell:=Range("b2"),maxminval:=1,bychange:=Range("c2")''''dodanie warunku ograniczającego - B5 to lewa strona, 1 to znak ≤, D5 to prawa strona'''solveraddcellref:=Range("b5"),relation:=1,formulatext:=Range("d5")solversolveuserfinish:=TrueEndSub

Przyszłość VBA

[edytuj |edytuj kod]

Obecnie (2007 rok) Microsoft planuje namówienie dotychczasowych twórców makr VBA w programach Office, aby ci zaczęli korzystać z tzw.Office Business Applications(inne języki) (OBA)[2] dającego szersze możliwości (np.kod zarządzany).

Przypisy

[edytuj |edytuj kod]
  1. np.Visual Studio Tools for the Microsoft Office System
  2. Informacje nt. OBA:OBA: Office Business Applications: What is it, and how can I get started?

Linki zewnętrzne

[edytuj |edytuj kod]
Kontrola autorytatywna (implementacja języka programowania):
Źródło: „https://pl.wikipedia.org/w/index.php?title=Visual_Basic_for_Applications&oldid=78926285
Kategorie:
Ukryta kategoria:

[8]ページ先頭

©2009-2026 Movatter.jp