Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

VBSript Frage

TheTwister / 20 Antworten / Flachansicht Nickles

Hallo zusammen.
Suche für einen Kumpel ein VBSript das je nachdem wie Spät es ist eine Datei startet also zb. zwischen 6 u.12 Uhr datei1 und zwischen 12 u.18 Uhr datei2. Wenn es zb.8Uhr ist wird datei1 gestartet.

Ich hoffe ich habe mich verständlich genug ausgedrückt.
Vielen Dank im vorraus.

Ich habe keine Signatur !!!
bei Antwort benachrichtigen
gern gescheh n :- drup
drup TheTwister „VBSript Frage“
Optionen

Übernahme nach Excel implementieren: ja, kann man, die Objekt von Excel, also z.B. die Zeilen und Spalten auf einem Excel-Tabellenblatt, können angesprochen werden - ist aber ein klein wenig komplizierter, werde mal ein Beispiel suchen ...

Für den Moment noch ein Tipp zum Entwickeln mit VBScript: das Skript in VBA entwickeln, also z.B. innerhalb von Word oder Excel.

Weg: Excel starten (leere Arbeitsmappe), unter Extras --> Makro den Visual-Basic-Editor öffnen. In der Liste links "Diese Arbeitsmappe" doppelklicken --> rechts wird ein Programmfenster geöffnet.

Darin jetzt den Code erfassen. Unterschied zu VBScript: in VBA muss auch das Hauptprogramm in einer Funktion drin definiert werden.

Vorteil: es werden schlauere Fehlermeldungen angezeigt, und der Debugger springt auf die Zeile, die ein Problem macht. Und: wenn unter Extras --> Verweise die entsprechenden Libraries angehakt sind, kann man mit F2 direkt eine Liste der Objekte / Eigenschaften etc. anzeigen lassen. Libraries: Windows Script Host Object Model, und Microsoft Scripting Runtime.

Ausserdem: wenn bei "Dim" der Datentyp richtig angegeben worden ist, kann man die Variable schreiben und den Punkt setzen --> eine Liste mit Methoden und Eigenschaften erscheint.
Hier das Programm, wie ich es in VBA entwickelt habe - für VBScript müssen die "as ..." nach dem "Dim" weg:

Option Explicit

Dim fso As FileSystemObject
Dim fout As TextStream

Function dirListe()
Dim WshShell      As WshShell
Dim sCurDir       As String
Dim sPfad         As String
Dim sParentDir    As String

' Objekte initialisieren
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")

' Verzeichnis angeben lassen
sParentDir = InputBox("Verzeichnis angeben:", _
                      "Verzeichnisinhalt auflisten", "C:\Temp")
If sParentDir = "" Then
   MsgBox "Kein Verzeichnis angegeben."
   Exit Function
End If

' Outputdatei öffnen
sCurDir = WshShell.CurrentDirectory
sPfad = fso.BuildPath(sCurDir, "dir.txt")
Set fout = fso.OpenTextFile(sPfad, ForWriting, True)
fout.Write "Verzeichnis von " & sParentDir & vbCrLf & vbCrLf

' Liste erzeugen
Call DateilisteAnzeigen(sParentDir, 0)

' Ende
fout.Close
MsgBox "Verzeichnis wurde geschrieben nach: " & sPfad

End Function

Function DateilisteAnzeigen(ordnerAngabe, tiefe)
Dim oParent       As Folder
Dim oFolders      As folders
Dim oFiles       As files
Dim fo            As Folder
Dim fi            As file
Dim sList         As String
   
   ' Liste beginnt mit Verzeichnis
   Set oParent = fso.GetFolder(ordnerAngabe)
   sList = Space(tiefe) & oParent.Name
   sList = sList & Space(60 - Len(sList)) & oParent.DateLastModified
   sList = sList & vbCrLf
   fout.Write sList
   
   'hier geht's rekursiv los:
   'für alle Unterverzeichnisse die Funktion nochmal aufrufen ...
   Set oFolders = oParent.SubFolders
   For Each fo In oFolders
      Call DateilisteAnzeigen(fo, tiefe + 3)
      fout.Write vbCrLf
   Next
   
   'und jetzt noch die Files im Verzeichnis:
   Set oFiles = oParent.files
   For Each fi In oFiles
      sList = Space(tiefe + 3) & fi.Name
      sList = sList & Space(60 - Len(sList)) & fi.DateLastModified
      sList = sList & vbCrLf
      fout.Write sList
   Next
End Function

bei Antwort benachrichtigen