Rückgabewert für VBScript

Hallo,
habe ein VBScript, welches von einem anderen Programm (AutoIt) aufgerufen wird. Ich würde gerne im VBScript den Rückgabewert beeinflussen. Der ist normalerweise 0 und wenn was im Script nicht funtioniert hat ist er 1. Den Fehlerfall würde ich nun gerne unterscheiden und den Rükgabewert je nach Fehler eben auf 2,3… setzten wollen.

Hat da jemand eine Idee, wie das geht. Finde dazu im Internet rein gar nichts.
Dank und Gruss
Matthias

Hallo Matthias,

Hast du denn Zugriff auf das VB Script, so das du es abaendern kannst?
Wenn ja, dann poste es hier dochmal oder sende es mal an [email protected]
So kann man dir sicherlich auch helfen :wink:
So eine Diagnose zu sagen wie man es machen koennte, ist schwer, da man nicht weiss, wo Fehler auftreten koennen, wo wird der Rückgabewert gesendet etc.

VLG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das Ding macht nur ein XLS-File (in einem alten Excel-Format) auf und speichert es unter dem aktuellen Excel-Format ab. Fehlerquellen wären: das File existiert nicht oder das File wurde nicht richtig generiert, was ich am Datum in der ersten Spalte sehen kann. Ich habe mal einen „ExitCode“ eingeführt, der die beiden Fehlerfälle abdeckt. Diesen „ExitCode“ würde ich nun gerne an das aufrufende Programm zurückgeben.

Dank und Gruss
Matthias


Dim objFileSystem, objExcel, objFile, exitCode, listArgs
Set listArgs = WScript.Arguments
If listArgs.Count = 1 Then
On Error Resume Next
Set objFileSystem = CreateObject(„Scripting.FileSystemObject“)
If objFileSystem.FileExists("…Pfad…" & listArgs(0) & „_2.xls“) Then objFileSystem.DeleteFile „…Pfad…“ & listArgs(0) & „_2.xls“, True
Set objExcel = WScript.CreateObject(„Excel.Application“)
Set objFile = objExcel.Workbooks.Open(objFileSystem.GetFile("…Pfad…" & listArgs(0) & „.xls“))
If Err Then
exitCode = 2
Else
If DateDiff(„d“, objFile.ActiveSheet.Cells(2, 1).Value, Now()) > 1 Then
exitCode = 3
Else
exitCode = 0
End If
objFile.SaveAs „…Pfad…“ & listArgs(0) & „_2.xls“, -4143
objFile.Close
objFile.Application.Quit
End If
Set objExcel = Nothing
Set objFile = Nothing
Set objFileSystem = Nothing
End If
Set listArgs = Nothing

Hallo
Also erstmal ist mir zunächst unklar, wie ein script einen Rückgabewert an ein aufrufendes Programm zurückliefern kann.
Ich kenne nur den Wert im EAX-Register bei exe-files als Rückgabewert.
Bei Dir müßte wohl die noch laufende Scriptanwendung mit dem Programm kommunizieren. Dazu kommt, das ich dieses „Autolt“ nicht kenne.
Mein Vorschlag wäre eine temporäre Datei, eine Pipe oder ein Registryeintrag, je nachdem, was man mit dem Script am einfachsten realisieren kann, um Nachrichten mit dem „Autolt“ auszutauschen.
Weitere Kenntnisse habe ich nicht dazu.
Man könnte auch mal in der Webentwicklung nachschauen, hier werden Activex Objecte von Scripts verwendet, welche natürlich über Methoden und Daten miteinander verbunden sind.
Ich weiß im Moment nur nicht, wie man einen vbscript-Code in ein geeignetes Objekt verwandelt. Die Objektorientierte Programmierung mit activex-Objekten könnte es in Deinem Fall leichter machen.

Mfg
Auch Matthias

-)
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo nochmal.
Etwas später ist mir noch eine Möglichkeit eingefallen:
In deinem VB-Programm kann Du vielleicht das Script control unterbringen.
Das gibts als Download für bestimmte VB-Versionen.
Damit kannst Du dein Script als Bestandteil Deines Programms ausführen, und natürlich auch mehrere Daten gemeinsam benutzen.
Vorraussetzung ist natürlich, das dieses „Autolt“ von Dir veränderbar ist.
So mehr weiß ich nicht.
MfG
Matthias

Hallo!

Probiere mal

WScript.Quit(„ende“)

und schreibe Bescheid, wenn das geht. (Ich habs noch nicht gebraucht.)

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]