09.11.2013 Aufrufe

VBA / VBScript

VBA / VBScript

VBA / VBScript

MEHR ANZEIGEN
WENIGER ANZEIGEN

Verwandeln Sie Ihre PDFs in ePaper und steigern Sie Ihre Umsätze!

Nutzen Sie SEO-optimierte ePaper, starke Backlinks und multimediale Inhalte, um Ihre Produkte professionell zu präsentieren und Ihre Reichweite signifikant zu maximieren.

<strong>VBA</strong> / <strong>VBScript</strong><br />

Seminar Skriptsprachen SS09<br />

Hendrik Wolf / Mnr: 25202540<br />

19.06.2009 1


Inhalt<br />

• <strong>VBA</strong><br />

– Einführung<br />

– Sicherheit<br />

– Verbreitung<br />

– Beispiel<br />

• <strong>VBScript</strong><br />

– Einführung<br />

– Anwendungsbereiche<br />

– Vor- und Nachteile<br />

– Beispiele<br />

– Email Verifizierung<br />

19.06.2009 2


Visual Basic for Application<br />

• Skriptsprache von MS Office<br />

• Steuerung von Abläufen<br />

• Von Visual Basic abgeleitet<br />

• Seit 1990 Nachfolger von versch. Makro<br />

Sprachen<br />

19.06.2009 3


<strong>VBA</strong>-Unterstützung<br />

• <strong>VBA</strong> wird unterstützt von<br />

– MS Office<br />

– Visio<br />

– Outlook<br />

– Corel<br />

– AutoCAD<br />

– Mindmanager<br />

• Apple Macintosh bietet keine <strong>VBA</strong>-Unterstützung<br />

19.06.2009 4


<strong>VBA</strong> - Sprache<br />

• <strong>VBA</strong> ist eine interpretierende Sprache<br />

• Interpretierung über Wirtsprogramm (Word,<br />

Excel)<br />

• Reduzierte Leistungsfähigkeiten gegenüber<br />

Visual Basic<br />

• Keine Kompilierung bis zu ausführbaren<br />

Maschinencode<br />

• wenig Unterstützung für Klassen und Objekte<br />

19.06.2009 5


<strong>VBA</strong> - Sicherheit<br />

• <strong>VBA</strong> unterstützt wesentliche Funktionen von VB<br />

• <strong>VBA</strong>-Anwendungen können daher schädlichen<br />

Code enthalten<br />

• MS bietet keine präventive Maßnahmen bei der<br />

Code Entwicklung<br />

• Nur im Nachhinein wird versucht die Ausführung<br />

abzusichern<br />

• Eigener Code kann mit einem Kennwort<br />

geschützt werden<br />

19.06.2009 6


<strong>VBA</strong> - Verbreitung<br />

• In der Industrie wird <strong>VBA</strong> verwendet um schnelle<br />

einfache IT-Lösungen zu entwickeln<br />

• Durch die geringe Unterstützung und<br />

Funktionsumfang von <strong>VBA</strong> ist die<br />

Weiterentwicklung von Programmen schwierig<br />

19.06.2009 7


19.06.2009 8


Projekt Explorer<br />

Zeigt alle Objekte der<br />

Arbeitsmappe an<br />

Eigenschaften der<br />

Formulare<br />

19.06.2009 9


Über F2 erhält man eine Übersicht<br />

der Klassen und deren Elemente<br />

19.06.2009 10


UserForm<br />

Formulare:<br />

Programmierbare<br />

Dialogfelder<br />

Module<br />

Prozeduren:<br />

Häufig verwendete<br />

Funktion<br />

Klassenmodul<br />

Objekte der Arbeitsmappe<br />

-Diese Arbeitmappe<br />

-Tabelle1…<br />

19.06.2009 11


19.06.2009 12


19.06.2009 13


19.06.2009 14


UserForm1<br />

Option Explicit<br />

Private Sub CommandButton1_Click()<br />

TextBox3.Text = Bere_Verbrauch(TextBox1.Text, TextBox2.Text)<br />

End Sub<br />

Private Sub CommandButton2_Click()<br />

TextBox1.Text = ""<br />

TextBox2.Text = ""<br />

TextBox3.Text = ""<br />

End Sub<br />

19.06.2009 15


19.06.2009 16


19.06.2009 17


Modul1<br />

Option Explicit<br />

Public Function Bere_Verbrauch(km As String, liter As String) As String<br />

Dim gefahrene_km As Double<br />

Dim tank_liter As Double<br />

Dim ergebnis As Double<br />

gefahrene_km = CDbl(km)<br />

tank_liter = CDbl(liter)<br />

ergebnis = (tank_liter / gefahrene_km) * 100<br />

Bere_Verbrauch = CStr(ergebnis)<br />

End Function<br />

19.06.2009 18


19.06.2009 19


Das Endergebnis<br />

19.06.2009 20


Visual Basic Script<br />

• VBS ist ebenfalls eine Interpretierende Sprache<br />

die 1990 von Microsoft entwickelt wurde<br />

• Funktionsumfang ist geringer als bei <strong>VBA</strong><br />

• VBS ermöglicht den Zugriff auf:<br />

– Bibliotheken von MS Office und des Betriebssystems<br />

– Access, SQL-Server<br />

– Auch Bios Status bis hin zu Laufwerke ausfahren<br />

• VBS hat in der Praxis 3 Anwendungsbereiche:<br />

19.06.2009 21


Windows-Betriebssystem<br />

• Automatisierung von Standartaufgaben über<br />

Windows Scripting Host (WSH)<br />

• WSH akzeptiert VBS Dateien der Form *.vbs<br />

und *.wsf (reine Textdateien)<br />

• Internet Explorer akzeptiert VBS Dateien der<br />

Form *.hta und *.chm (HTML-Dateien)<br />

• *.hta bestehen aus VBS, JavaScript und HTML<br />

Elementen<br />

• *.chm sind Windows Hilfe Dateien<br />

19.06.2009 22


Browser (Client-seitiges VBS)<br />

• VBS wird verwendet um den Browser zu steuern<br />

– Browser führt VBS aus<br />

• VBS kann damit dynamische Inhalt in eine<br />

Webseite integrieren<br />

– Konkurrenz für JavaScript<br />

• Nachteile:<br />

– VBS: Nur von Internet Explorer, Mozilla (Plugins)<br />

unterstützt<br />

– JavaScript: Von allen Browsern akzeptiert<br />

19.06.2009 23


Webserver (Server-seitiges VBS)<br />

• Für Windowsserver ist VBS ein Bestandteil der<br />

Microsoft Active Server Pages<br />

• VBS Code wird in einer HTML Datei integriert<br />

(*.asp).<br />

– Konkurrenz zu PHP<br />

• Über ASP wird ein Programm auf der Serverseite<br />

ausgeführt und das Ergebnis wird in HTML Form<br />

wiedergegeben.<br />

– Konkurrenz zu dem freien Apache Webserver<br />

19.06.2009 24


VBS – Vor- und Nachteile<br />

• Vorteile:<br />

– Geringe Dateigröße da Interpreter Sprache<br />

– Auf allen Windows Systemen verfügbar<br />

• Nachteile:<br />

– Keine Abschottung für schädliche VBS-Programme<br />

– Inzwischen wird VBS als Email Anhang von allen<br />

Clients blockiert (auch von Outlook)<br />

– BSP: Networm.win32.Sasser, EMail-Wurm.Netsky,<br />

ILOVEYOU-Virus<br />

19.06.2009 25


VBS - Beispiel<br />

• Einfachste Form:<br />

MsgBox “Nachricht“ ,0, “Titel“<br />

– Ergebnis:<br />

19.06.2009 26


VBS - MsgBox<br />

• Argument ,0, = Art des Fensters<br />

– 0 = OK-Fenster<br />

– 1 = OK; Abbrechen -Fenster<br />

– 2 = Abbrechen; Wiederholen; Ignorieren -Fenster<br />

– 3 = Ja; Nein; Abbrechen -Fenster<br />

– 4 = Ja; Nein -Fenster<br />

– 5 = Wiederholen; Abbrechen -Fenster<br />

– 16 = Anzeigen des Stopp-Symbols<br />

– 32 = Anzeigen des Fragezeichen-Symbols<br />

– 48 = Anzeigen des Symbols Warnung<br />

– 64 = Anzeigen des Symbols Information<br />

19.06.2009 27


VBS - Hallo Welt<br />

• Popup Fenster, das 3 Sekunden lang angezeigt wird<br />

• CreateObject(„Art des Objektes")<br />

Dim Beispiel<br />

Set Beispiel = CreateObject("WScript.Shell")<br />

Beispiel.Popup "Hallo Welt" ,"3", "Testprogramm"<br />

– Ergebnis:<br />

19.06.2009 28


VBS - Grundlagen<br />

• 2 Verschiedene Arten von Befehlen:<br />

– Befehle die mit einer definierten Variable<br />

eingeleitet werden<br />

– Befehle die von VBS vordefiniert sind<br />

• "On Error Resume Next" in die erste Zeile, damit<br />

nicht jede Fehlermeldung angezeigt wird<br />

19.06.2009 29


VBS - Rechenbeispiel<br />

On Error Resume Next<br />

dim a<br />

set a = CreateObject("WScript.Shell")<br />

a = InputBox( "Bitte Wert 1 eingeben","Eingabebox","Hier die<br />

Zahl eingeben" )<br />

dim b<br />

set b = CreateObject("WScript.Shell")<br />

b = InputBox( "Bitte Wert 2 eingeben","Eingabebox","Hier die<br />

Zahl eingeben„ )<br />

dim c<br />

set c = CreateObject("WScript.Shell")<br />

c = a * b<br />

MsgBox "Das Ergebnis ihrer Rechnung lautet: " & c,64,""<br />

19.06.2009 30


VBS - Rechenbeispiel<br />

19.06.2009 31


VBS - Systembefehle<br />

• Dateien Löschen:<br />

dim Beispiel<br />

set Beispiel = CreateObject( "Scripting.FileSystemObject" )<br />

Beispiel.DeleteFile "d:\test\Müll.txt" , true<br />

• Operation im Dateisystem<br />

• True = Operation Bestätigen<br />

• Weitere Befehle:<br />

– Beispiel.copyFile “Urpfad“, “Zielpfad“, True<br />

19.06.2009 32


Email Validation in VBS<br />

dim theAddress<br />

set theAddress = CreateObject("WScript.Shell")<br />

theAddress =<br />

InputBox("Bitte Email Adresse eingeben","Email Validation","Email")<br />

dim atCnt<br />

atCnt = 0<br />

dim Emailvalid<br />

Emailvalid = 0<br />

' Anzahl der "@"<br />

' Emailvalid = 0 Email gueltig<br />

' Emailvalid = 1 Email ungueltig<br />

19.06.2009 33


Email Validation in VBS<br />

if len(theAddress) < 5 then<br />

Emailvalid = 1<br />

elseif instr(theAddress,"@") = 0 then<br />

Emailvalid = 1<br />

elseif instr(theAddress,".") = 0 then<br />

Emailvalid = 1<br />

elseif len(theAddress) - instrrev(theAddress,".") > 3 then<br />

Emailvalid = 1<br />

elseif instr(theAddress,"_") 0 and _<br />

instrrev(theAddress,"_") > instrrev(theAddress,"@") then<br />

Emailvalid = 1<br />

' Minimale Laenge = 5 (a@b.c )<br />

' mindestens ein "@"<br />

' mindestens ein ".„<br />

' nicht mehr als 3 Zeichen nach Letztem "."<br />

' kein "_" nach "@"<br />

19.06.2009 34


Email Validation in VBS<br />

else<br />

for i = 1 to len(theAddress)<br />

if mid(theAddress,i,1) = "@" then<br />

atCnt = atCnt + 1<br />

end if<br />

next<br />

' Nur ein "@”<br />

if atCnt > 1 then<br />

Emailvalid = 1<br />

end if<br />

for i = 1 to len(theAddress)<br />

if not isnumeric(mid(theAddress,i,1)) and _<br />

(lcase(mid(theAddress,i,1)) < "a" or _<br />

lcase(mid(theAddress,i,1)) > "z“) and _<br />

mid(theAddress,i,1) "_" and _<br />

mid(theAddress,i,1) "." and _<br />

mid(theAddress,i,1) "@" and _<br />

mid(theAddress,i,1) "+" and _<br />

mid(theAddress,i,1) "-" then<br />

Emailvalid = 1<br />

end if<br />

next<br />

end if<br />

' Prüfe jedes Zeichen auf Gueltigkeit<br />

19.06.2009 35


Email Validation in VBS<br />

if Emailvalid = 1 then<br />

msgbox "Email Adresse ist ungültig ",0,"Email"<br />

else<br />

msgbox "Email Adresse ist gültig ",0,"Email"<br />

end if<br />

19.06.2009 36


Email Validation in VBS<br />

• InStr([start,]string1,string2[,compare])<br />

– Durchsucht einen String nach einem Zeichen und gibt die Position des ersten<br />

Vorkommnisses wieder<br />

• InStrRev(string1,string2[,start[,compare]])<br />

– wie InStr, fängt jedoch am Ende des Strings an zu suchen und gibt die Position<br />

des ersten Vorkommnisses vom Anfang des gezählt zurück<br />

• mid(string,start,length)<br />

– ein oder mehrere Zeichen aus einem String herauslesen<br />

• IsNumeric(expression)<br />

– Wenn ein Ausdruck eine reine Zahl ist wird True wiedergegeben ansonsten<br />

False<br />

• LCase(string)<br />

– Konvertiert einen String komplett in Kleinbuchstaben<br />

19.06.2009 37


Quellenangaben<br />

• Folie: 3 bis 7<br />

– http://de.wikipedia.org/wiki/Visual_Basic_for_Applications<br />

• Folie: 15 und 18<br />

– http://www.activevb.de/tutorials/tut_vbatutorial/tut_vbatutorial.html#anchor4<br />

• Folie: 21 bis 25<br />

– http://de.wikipedia.org/wiki/Visual_Basic_Script<br />

• Folie: 26 bis 33<br />

– http://de.wikibooks.org/wiki/VBS<br />

• Folie: 34 bis 35<br />

– http://www.aspfaqs.com/webtech/051999-1.shtml<br />

• Folie: 37<br />

– http://www.w3schools.com<br />

19.06.2009 38

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!