| |
Windows Scripting Host allgemein
Allgemeine Dinge, die man immer wieder für Scripte benötigt.
Array
Case Select
Datumsprüfung und Wochentagausgabe
Dialogbox mit Frage
kleine Abfrage
Parameteraufruf
Rechenoperationen
Runden
Schaltjahrtest
Schleife do...until
Schleife for ... next
Schleife while
Scriptbeispiel - Geburtstagsmeldedienstprogramm
Scriptbeispiel - Ordnerauswahl
String in Zeichenkette finden
String splitten
Text ersetzen
Textstring bearbeiten
verschiedene Messageboxes
Zufallszahl
Array
Ein Array ist eine Art Behälter,
in den Werte gespeichert werden können.
' Array mit 4 Werten (0 bis 3)
dim zahl(3)
zahl(0) = "null"
zahl(1) = "eins"
zahl(2) = "zwei"
zahl(3) = "drei"
li = "Array zahl " & vbcr & "von" & vbcr
li = li & (LBound(zahl) & " -> " & zahl(LBound(zahl)))
li = li & vbcr & "bis" & vbcr
li = li & (UBound(zahl) & " -> " & zahl(UBound(zahl)))
MsgBox(li)
' Array mit 6 Werten (0 bis 5),
' wobei das Array neu dimensioniert werden kann.
ReDim liste(5)
liste(0) = "Anton"
liste(1) = "Bert"
liste(2) = "Charly"
liste(3) = "Dieter"
liste(4) = "Egon"
liste(5) = "Fred"
li = "Array liste " & vbcr & "von" & vbcr
li = li & (LBound(liste) & " -> " & liste(LBound(liste)))
li = li & vbcr & "bis" & vbcr
li = li & (UBound(liste) & " -> " & liste(UBound(liste)))
MsgBox(li)
' Array wurde neu dimensioniert,
' nun können 11 Werte gespeichert werden.
' Der Befehl preserve sorgt dafür, dass die alten Werte 0 bis 5
' beibehalten werden.
ReDim Preserve liste(10)
liste(6) = "Gustav"
liste(7) = "Hans"
liste(8) = "Ingo"
liste(9) = "Jens"
liste(10) = "Karl"
li = "Array liste nach ReDim" & vbcr & "von" & vbcr
li = li & (LBound(liste) & " -> " & liste(LBound(liste)))
li = li & vbcr & "bis" & vbcr
li = li & (UBound(liste) & " -> " & liste(UBound(liste)))
MsgBox(li)
' Mehrdimensionales Array mit zwei Dimensionen
' 6 Werte können gespeichert werden.
Dim tabelle(1,2)
tabelle(0,0) = "A1"
tabelle(0,1) = "B1"
tabelle(0,2) = "C1"
tabelle(1,0) = "A2"
tabelle(1,1) = "B2"
tabelle(1,2) = "C2"
li = "Mehrdimensionales Array tabelle" & vbcr
For i = 0 to UBound(tabelle,1)
For j = 0 to UBound(tabelle,2)
li = li & i & "/" & j & " -> " & tabelle(i,j) & vbcr
Next
Next
MsgBox(li)
Stand: 30.07.2006 Case Select
Dieses Script ist ein Beispiel für einen Case Select.
Mit dem Case Select kann man einfach eine Auswahl treffen und
entsprechend Code ausführen.
zahl = 3
Select Case zahl
Case 4:
msgbox(zahl)
msgbox("weiter")
Case 1,2,3:
msgbox("Die Zahl lautet: " & zahl & " !")
Case Else:
msgbox("keine Auswahl")
End Select
Stand: 18.08.2006 Datumsprüfung und Wochentagausgabe
Diese Skript prüft, ob Sie ein korrektes Datum eingeben und
gibt dann den Wochentag und das aktuelle Datum aus.
datumeingabe = inputbox("Geben Sie bitte ein Datum ein (Jahr-Monat-Tag): ")
if isdate(datumeingabe) then
liste = "Ihre Eingabe: " & datumeingabe & vbcr & "Tag: " & day(datumeingabe)
liste = liste & vbcr & "Monat: " & month(datumeingabe) & vbcr & "Jahr: "
liste = liste & year(datumeingabe) & vbcr
liste = liste & "Wochentag: " & weekdayname(weekday(datumeingabe)) & vbcr
else
liste = liste & "Sie haben kein korrektes Datum eingegeben." & vbcr
end if
liste = liste & vbcr & "Heute ist " & weekdayname(weekday(date)) &", der "& now & vbcr
liste = liste & "Datum: " & date & vbcr & "Zeit: " & time & vbcr
msgbox liste
Stand: 13.10.2005 Dialogbox mit Frage
nachricht = "HALLO WELT" & vbcr & vbcr & "Dies ist eine kleine Testbox!" & vbcr
nachricht = nachricht & "Viel Spaß damit."& vbcr & vbcr
nachricht = nachricht & "Soll der Test gestartet werden? "& vbcr & vbcr
antwort = MsgBox(nachricht, vbQuestion+vbYesNo)
if antwort=vbNo then msgbox("Kein Test."): WScript.quit
msgbox ("Dies ist eine Testnachricht!" & vbcr & "Das war's.")
Stand: 13.10.2005 kleine Abfrage
frage = inputbox("Bitte Namen eingeben: ", "Namensabfrage", "Max Mustermann")
if frage = cancel then wscript.quit
msgbox "Sie heißen " & frage & "."
Stand: 13.10.2005 Parameteraufruf
Dieses Script liest die Parameter aus, die beim Starten mitgegeben wurden.
z.B. test.vbs Anton geheim
set oArgs = Wscript.Arguments
If oArgs.Count > 0 Then
user = oArgs.item(0)
passwort = oArgs.item(1)
msgbox (user & " und " & passwort)
else
msgbox("Keine Parameter mitgegeben. Aufruf mit test.vbs user passwort")
end if
Stand: 28.03.2006 Rechenoperationen
a= inputbox ("Zahl a eingeben: ")
b= inputbox ("Zahl b eingeben: ")
summe = 0 + a + b
subtraktion = a - b
produkt = a * b
division = a / b
liste = "Zahl a: " & a & vbcr & "Zahl b: " & b & vbcr & vbcr _
& "Summe: " & summe & vbcr & "Produkt: " & produkt & vbcr & "Division: "
liste = liste & division & vbcr & "Subtraktion: " & subtraktion & vbcr
msgbox liste
Manchmal gibt es ein kleines Problem bei der Summenbildung,
da der Computer die Zahlen a und b, wenn das Zeichen "+" steht,
manchmal verknüpft statt addiert. Wenn man nun aber noch eine 0 hinzu addiert,
ist dem Computer die Rechenoperation Addition auf jeden Fall klar.
Stand: 13.10.2005 Runden
Dieses Script rundet eine Zahl auf bzw. ab.
zahl = 1.456453
msgbox(zahl & " wird auf 0 Nachkommastellen gerundet: " & round(zahl,0) & vbcr _
& zahl & " wird auf 1 Nachkommastelle gerundet: " & round(zahl,1) & vbcr _
& zahl & " wird auf 2 Nachkommastellen gerundet: " & round(zahl,2) & vbcr _
& zahl & " wird auf 3 Nachkommastellen gerundet: " & round(zahl,3) & vbcr _
& zahl & " wird auf 4 Nachkommastellen gerundet: " & round(zahl,4) )
Stand: 29.07.2006 Schaltjahrtest
Bei diesem Skript geben Sie eine Jahreszahl ein und
das Programm prüft dieses Jahr, ob es ein Schaltjahr ist.
Die Berechnung kann bis ins Jahr 3999 durchgeführt werden.
Das Skript berücksichtig auch Jahrhundertschaltjahre.
jahr = inputbox("Geben Sie ein Jahr ein: (1-3999)","Schaltjahrtest",year(date))
tg = 28
pruefung = jahr / 100
pruef = pruefung - left(pruefung, 2)
if pruef = 0 then
pruefung = jahr / 400
pruef = pruefung - left(pruefung, 1)
if pruef = 0 then tg = 29
else
pruefung = jahr / 4
pruef = pruefung - left(pruefung, 3)
if pruef = 0 then tg = 29
end if
if tg = 29 then
msgbox (jahr & " ist ein Schaltjahr und der Februar hat "& tg & " Tage.")
else
msgbox (jahr & " ist kein Schaltjahr und der Februar hat "& tg & " Tage.")
end if
Stand: 13.10.2005 Schleife do...until
do
test = test + 1
msgbox ("Dies ist Testnummer: " & test)
loop until test > 9
Stand: 17.08.2006 Schleife for ... next
for test = 1 to 10
msgbox ("Dies ist Testnummer: " & test)
msgbox "Hallo"
next
Stand: 17.08.2006 Schleife while
while (i<10)
i = i + 1
msgbox "Klick " & i & " von 10",vbinformation
wend
Stand: 18.08.2006 Scriptbeispiel - Geburtstagsmeldedienstprogramm
Dieses Programm braucht zusatzliche eine "liste.txt" Datei,
in der die Namen und die Geburtstage hineingepflegt werden.
Zuerst muß in der 1. Zeile der Textdatei die Anzahl der Datensätze stehen.
In der nächsten Zeile der Namen und in der folgenden Zeile dann das Geburtstdatum.
Bei der Eingabe des Datums müssen sie sich nach der Einstellung des Systemdatums richten.
Momentan ist das Programm auf 300 Datensätze beschränkt, man kann diese aber noch erhöhen,
indem man im Quelltext des Programmes, die am Anfang stehenden 300er Zahlen auf den entsprechenden Wert setzt.
' Geburtstagsmeldedienst-Programm
' 25.02.2000
dim name(300)
dim datum(300)
dim jahr(300)
dim gebkind(300)
dim gebtag(300)
dim differenz(300)
' Momentan können nur 300 Datensaetze bearbeitet werden, wenn sie
' mehr bearbeiten wollen, müssen sie die oben stehende Zahl ändern.
' _________________________________________________________
' Einlesen der Datensaetze
set fs= CreateObject("scripting.filesystemobject")
datei="liste.txt"
set dateiinhalt = fs.opentextfile(datei)
anzahl = dateiinhalt.readline
for einlesen = 1 to anzahl
name(einlesen) = dateiinhalt.readline
datum(einlesen) = dateiinhalt.readline
next
dateiinhalt.close
'Datenspeicher von gebkind und gebtag auf leer setzen
zaehler = 0
for x = 1 to anzahl
gebkind(anzahl) = "leer"
gebtag(anzahl) = 0
next
' Berechnung
for x = 1 to anzahl
if (month(datum(x))-month(date)) > -1 then
if (month(datum(x))-month(date)) < 2 then
if (month(datum(x))-month(date)) = 0 then
if (day(datum(x))-day(date)) > -1 then
if (day(datum(x))-day(date)) < 11 then
tag = (day(datum(x))-day(date))
zaehler=zaehler + 1
gebkind(zaehler) = name(x)
gebtag(zaehler) = datum(x)
differenz(zaehler) = (day(gebtag(zaehler))-day(date))
end if
end if
else
tg = 100
if month(date) = 1 then tg=31
if month(date) = 2 then
' Schaltjahrproblem
tg=28
pruefung = year(date) / 100
pruef = pruefung - left(pruefung, 2)
if pruef = 0 then
pruefung = year(date) / 400
pruef = pruefung - left(pruefung, 1)
if pruef = 0 then tg = 29
else
pruefung = year(date) / 4
pruef = pruefung - left(pruefung, 3)
if pruef = 0 then tg = 29
end if
end if
if month(date) = 3 then tg=31
if month(date) = 4 then tg=30
if month(date) = 5 then tg=31
if month(date) = 6 then tg=30
if month(date) = 7 then tg=31
if month(date) = 8 then tg=31
if month(date) = 9 then tg=30
if month(date) = 10 then tg=31
if month(date) = 11 then tg=30
if month(date) = 12 then tg=31
if tg = 31 then
if ((31+(day(datum(x))))-day(date)) < 11 then
zaehler = zaehler + 1
gebkind(zaehler) = name(x)
gebtag(zaehler) = datum(x)
differenz(zaehler) = ((day(gebtag(zaehler))+31)-day(date))
end if
end if
if tg = 30 then
if ((30+(day(datum(x))))-day(date)) < 11 then
zaehler = zaehler + 1
gebkind(zaehler) = name(x)
gebtag(zaehler) = datum(x)
differenz(zaehler) = ((day(gebtag(zaehler))+30)-day(date))
end if
end if
if tg < 30 then
if ((tg+(day(datum(x))))-day(date)) < 11 then
zaehler = zaehler + 1
gebkind(zaehler) = name(x)
gebtag(zaehler) = datum(x)
differenz(zaehler) = ((day(gebtag(zaehler))+tg)-day(date))
end if
end if
end if
end if
end if
next
' Ausgabe
liste="Heute ist "&weekdayname(Weekday(date))&", der "& date & "." & vbcr
if zaehler > 0 then
for ord = 1 to zaehler
for ordnung = 1 to zaehler
if differenz(ord) < differenz(ordnung) then
diff = differenz(ord)
differenz(ord) = differenz(ordnung)
differenz(ordnung) = diff
diff = gebkind(ord)
gebkind(ord) = gebkind(ordnung)
gebkind(ordnung) = diff
diff = gebtag(ord)
gebtag(ord) = gebtag(ordnung)
gebtag(ordnung) = diff
end if
next
next
for e = 1 to zaehler
zaehler= zaehler - 1
if differenz(e) = 0 then liste = liste & vbcr & "Heute hat "& gebkind(e) &" Geburtstag. "& gebtag(e)
if differenz(e) = 1 then liste = liste & vbcr & "Morgen hat "& gebkind(e) & " Geburtstag. "& gebtag(e)
if differenz(e) > 1 then liste = liste & vbcr & "In " & differenz(e) & " Tagen hat " & gebkind(e) & " Geburtstag. " & gebtag(e)
next
end if
meldung = MsgBox(liste, vbInformation+vbOkay,"Geburtstagsmeldedienst")
Und nun noch ein Beispiel für eine Geburtstagsliste, speichern unter "liste.txt"
in das selbe Verzeichnis, wie das Visual Basic Programm. Mein Tip noch,
das Programm in den Autostart von Windows legen und
sie werden bei jedem Neustart über aktuelle Geburtstage informiert.
7
Person A
1978-03-01
Person B
1945-07-10
Person C
1963-02-19
Person D
1921-03-01
Person E
1985-02-28
Person F
1936-08-05
Person G
1948-04-24
Stand: 13.10.2005 Scriptbeispiel - Ordnerauswahl
set shell = CreateObject("Shell.Application")
laufwerk = inputbox ("Bitte wählen Sie ein Laufwerk aus:","Laufwerkauswahl","c:")
MsgBox shell.BrowseForFolder(0, "Bitte wählen Sie einen Ordner aus", 0,laufwerk)
*** Achtung:
Dieses Skript ist noch nicht ganz ausgereift,
wenn man beim Auswählen auf "abbrechen" wählt, stürzt es ab.
Stand: 13.10.2005 String in Zeichenkette finden
Dieses Script ermittelt die Stelle, an der ein String in einer Zeichenkette beginnt.
zeichenkette = "Windows Scripting Host"
string1 = "Script"
string2 = "h"
string3 = "VBS"
stelle1 = InStr(1,zeichenkette, string1,1)
stelle2 = InStr(1,zeichenkette, string2,1)
stelle3 = InStr(1,zeichenkette, string2,0)
stelle4 = InStr(1,zeichenkette, string3,1)
stelle5 = InStr(15,zeichenkette, string1,1)
msgbox(string1 & " an " & stelle1 & " gefunden")
msgbox(string2 & " an " & stelle2 & " gefunden")
msgbox(string3 & " an " & stelle3 & " nicht gefunden")
msgbox(string2 & " an " & stelle4 & " nicht gefunden")
msgbox(string1 & " an " & stelle5 & " nicht gefunden")
Mit InStr wird die Stelle eines einzelnen Buchstaben oder eines Strings ausgegeben,
an der dieser beginnt.
Wenn der zu suchende String nicht vorhanden ist, wird der Wert 0 ausgegeben.
Syntax:
Instr([Ab zu suchender Stelle],[Quelle],[Suche],[Groß-/Kleinschreibung])
Stand: 17.08.2006 String splitten
Dieses Script teilt einen String in einzelne Teile auf,
die durch ein bestimmtes Trennzeichen getrennt wurden.
liste = "1;2;3;4;5;6;7"
InputData = Split(liste, ";")
For each strData In InputData
text = strData
msgbox(text)
next
Stand: 28.03.2006 Text ersetzen
text = "Dies ist ein Test."
ausgabe = Replace(text, "ein Test", "abgeschlossen",1,-1,1)
msgbox ausgabe
Parameter:
Originaltext [text]
alter Text ["ein Test"]
neuer Text ["abgeschlossen"]
Textersetzungsanfang [1] -> optional
Anzahl der Textersetzung [-1] -> alle ersetzen
Klein- und Grosschreibung beachten [1] = nicht beachten [0] = beachten -> optional
Stand: 13.10.2005 Textstring bearbeiten
a = "HallO1"
msgbox(mid(a,2,3))
msgbox len(a)
msgbox left(a,2)
msgbox right(a,2)
msgbox lcase(a)
msgbox ucase(a)
Dieses Skript bearbeitet den Textstring "HallO1" wie folgt:
Die Funktion Mid() schneidet aus der Mitte einen Textstring heraus.
Die Funtkion Len() gibt die Gesamtlänge des Textstring aus.
Die Funtkion Left() schneidet von links x Zeichen aus.
Die Funtkion Right() schneidet von rechts x Zeichen aus.
Die Funtkion Lcase() stellt alle Zeichen des Textstrings auf Kleinebuchstaben um.
Die Funtkion Ucase() stellt alle Zeichen des Textstrings auf Großbuchstaben um.
Stand: 13.10.2005 verschiedene Messageboxes
frage = msgbox("Beantworten sie bitte folgende Fragen!",vbOKonly,"Ok- Button")
frage2 = msgbox("Weiter? ",vbOKCancel,"Ok- Cancel Button")
frage3 = msgbox("Es ist ein Fehler im Programm aufgetreten. Wie wollen sie fortfahren? ",vbAbortRetryIgnore,"WARNING")
frage4 = msgbox("Fortfahren? ",vbYesNoCancel,"Yes, No- Cancel Button")
frage5 = msgbox("Wirklich? ",vbYesNo,"YesNo Botton")
frage6 = msgbox("Nochmal? ",vbRetryCancel,"Wiederholen- Abbrechen")
frage7 = msgbox("Weiter? ",vbyesno + vbQuestion ,"Question")
frage8 = msgbox("Weiter? ",vbyesno + vbInformation ,"Information")
frage9 = msgbox("Weiter? ",vbyesno + vbExclamation ,"Exclamation")
frage10 = msgbox("Weiter? ",vbyesnocancel + vbCritical ,"Critical")
msgbox "Normal"
msgbox "Hinweis",vbInformation
msgbox "Frage",vbQuestion
msgbox "Wichtig",vbExclamation
msgbox "Kritisch",vbCritical
Stand: 18.08.2006 Zufallszahl
Dieser Skript erzeugt und listet danach 10 Zufallszahlen zwischen 1 und 100 auf.
von = 1
bis = 100
anzahlzahlen = 10
randomize
anzahl = bis - von + 1
for x = 1 to anzahlzahlen
zufall = fix(rnd*(anzahl))+von
liste = liste & vbcr & zufall
next
msgbox(anzahlzahlen & " Zufallszahl zwischen "& von &" und "& bis &"."& vbcr & vbcr &"Zufallszahlen: "& liste)
Stand: 13.10.2005 |
|