vb-Zentrum
VB-Script
http://www.vb-zentrum.de/tip_script.html

© 2017 vb-Zentrum

0001 Version der ScriptEngine ermitteln

Mit der folgenden Funktion prüfen Sie, ob auf Ihrem System die ScriptEngine installiert ist und um welche Version es sich dabei handelt:

Function getScriptVersion
  Dim s

  s = ScriptEngineMajorVersion & "."
  s = s & ScriptEngineMinorVersion & "."
  s = s & ScriptEngineBuildVersion 
  getScriptVersion = s
End Function

MsgBox getScriptVersion, vbInformation, ScriptEngine & " Version:"

Autor: ralf schlegel
Stand 07/2006

Nach oben

0002 String in ASCII-Zeichen auflösen

Das folgende Beispiel zeigt, wie man einen String in ASCII-Werte zerlegt. Gleichzeitig sehen Sie die Verwendung von InputBox und MsgBox zur Ein- und Ausgabe; Syntax und Konstanten sind mit der gewohnten Entwicklungsumgebung von Visual-Basic identisch:
Function ASCIIConvert(srcString)
  Dim i, CurChr

  On Error Resume Next  
  ASCIIConvert = ""
  For i = 1 To Len(srcString)
    CurChr = Mid(srcString, i, i + 1)
    ASCIIConvert = ASCIIConvert & " " & Asc(CurChr)
  Next  
  ASCIIConvert = srcString & ":" & Chr(13) & Right(ASCIIConvert, Len(ASCIIConvert) - 1)
End Function


Dim s

s = InputBox ("Geben Sie Ihren Text ein:","vbzTextToASCII")
s = ASCIIConvert (s)
MsgBox s, 64, "vbzTextToASCII"    ' 64 = vbInformation

Autor: ralf schlegel
Stand: 07/2006

Nach oben

0003 Drucken mit VB-Script

NEIN - Sie brauchen nicht weiter zu suchen! VBScript stellt kein Printer-Objekt zur Verfügung und hat auch sonst keine Methoden um ein Dokument zu drucken! Wenn Sie einen zur Laufzeit generierten Text auf dem Drucker ausgeben wollen, müssen Sie sich eines kleinen Tricks bedienen:

Dim fName
Dim fso, file
Dim shell
 
' 1.) Daten in eine temporäre Datei schreiben:
Set fso = CreateObject("Scripting.FileSystemObject")
fName = "C:\Temp\Printer.txt"
' Datei öffnen und beschreiben:
Set file = fso.CreateTextFile(fName, True)
  file.Write "Irgendein Text: " vbCrLf
file.close              ' Datei schliessen
Set file = Nothing
Set fso = Nothing 
 
' 2.) Datei über Notepad ausdrucken:
Set shell = CreateObject("Wscript.Shell")
shell.Exec "Notepad.exe /P """ & fName & """"
Set shell = Nothing

Hinweis: Die mehrfachen Anführungszeichen in der 'shell.Exec'-Zeile sorgen dafür, dass der übergebene Dateiname als Ganzes interpretiert wird! Das ist dann zwingend erforderlich, wenn in Ihrem Dateinamen Leerzeichen enthalten sind, da Notepad den Dateinamen sonst in mehrere Parameter zerlegen würde!

 

Autor: ralf schlegel
Stand: 02/2008

Nach oben

0004 Standard Drucker festlegen

Mit VB-Script läßt sich sehr einfach der Standard-Drucker wechseln, dies ist sicher interessant in Verbindung mit Tipp Nummer 0003, sodass der Ausdruck geziehlt erfolgen kann. Voraussetzung ist, dass Sie den Namen des Drucker kennen - so wie er auch in der Liste der "Geräte und Drucker" (siehe Systemsteuerung) benannt ist. Im folgende Beispiel machen wir den "PDFCreator" zum Standard-Drucker:

Dim objWMIService
Dim objPrinter
Dim colInstalledPrinters

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\.\root\cimv2")

Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where Name = 'PDFCreator'")

For Each objPrinter in colInstalledPrinters
    objPrinter.SetDefaultPrinter()
Next

Autor: ralf schlegel
Stand: 04/2017

Nach oben

0005 Microsoft Word gekonnt starten

Eine andere Applikation mit VB-Script zu starten ist mit dem shell.Exec Befehl keine Kunst. Was aber, wenn man diese Applikation nur einmal öffnen will? Dann muss man wissen, ob die Anwendung bereits läuft, denn in diesem Fall soll sie nur in der Vordergrund gebracht werden. Aufgrund der umfangreichen VB-Schnittstelle in MS-Word ist das keine große Sache:

Sub startWord     
  Dim objWordApp
  On Error Resume Next
  
  ' Versuchen eine WORD-Instanz zu finden:
  Set objWordApp = GetObject(, "word.Application")
  ' Wenn nicht vorhanden, neue Instanz anlegen:
  If err.number = 429 Then
    err.clear
    Set objWordApp = CreateObject("word.Application")
  End If  
  With objWordApp
    ' mindest. 1 leeres Dokument öffnen
    If .Documents.count < 1 Then .Documents.Add  
    ' mit einem Trick in den Vordergrund bringen:
    If .Tasks.Exists("Word") Then
      .Tasks("Word").WindowState = 2    ' Fenster minimieren
      .Tasks("Word").WindowState = 0    ' und wieder herstellen
    End If
    ' und Anzeigen:
    .Visible = True
  End With
  Set objWordApp = Nothing
End Sub

Hinweis: Da es keine 'SetForeground' Methode o.ä. gibt, wird bei einer bestehenden Instanz das gefundene Fenster erst minimiert und dann wiederhergestellt. Dadurch erscheint es automatisch im Vordergrund.

 

Autor: ralf schlegel
Stand: 03/2008

Nach oben

0006 VBScript mit UAC Unterstützung

Mit VB-Script lassen sich viele schöne Dinge automatisieren:

  • Einstellungen in der Registry setzen
  • auf Updates prüfen und Dateien kopieren
  • Backups erstellen u.v.m.

 ...wäre da nicht das lästige UAC (User Access Control), das solche Aktionen seit MS Vista selbst für angemeldete Administratoren blockiert.

Nun - die Blockade kann man nicht umgehen. Man kann aber dafür sorgen, dass sich ein Script selbst mit "RunAsAdministrator" aufruft(!), sodass der Bildschirm abdunkelt und ein Dialog vom Benutzer bestätigt werden muss. Danach haben Sie wieder freie Hand, was das Scripting angeht!

Die hier zum Download bereitgestellte Datei beinhaltet einen solchen "Script-Rumpf"! Das Script ist ausführlich dokumentiert.
Fügen Sie einfach ihren eigenen Code an der beschriebenen Stelle ein und lassen den Rest unberührt.
Für ein leichteres Verständnis habe ich als Beispiel eine automatische Registrierung von OCX-Dateien eingefügt:
ziehen Sie eine beliebige OCX-Datei per Drag and Drop auf das Script-Icon, so wird die entsprechende Datei im System registriert.

Den Beispielabschnitt im Script können Sie für die eigene Verwendung natürlich löschen!

Download now!   0005_UAC_supported_VBScript.zip

Autor: ralf schlegel
Stand: 10/2012

Nach oben