VBA / VBScript
VBA / VBScript
VBA / VBScript
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