| |
VB Skript (VBS)Ein VB Skript aus Access heraus starten | | | Autor: Ray01 | Datum: 04.05.14 21:15 |
| Hallo,
ich versuche aus Access heraus ein VB Skript (1_Make_Konfi.vbs) zu starten, das aber bricht mit einer Fehlermeldung ab. Wenn ich das VB Skript direkt ausführe funktioniert das einbandfrei! Das VB Skript liest eine csv- File ein (read.txt) und erstellt daraus eine anderes csv- File (Result.txt). Mir ist nicht klar wo da das Problem ist! Vielleicht kann mir einer weiter helfen.
Fehler: Die Datei wurde nicht gefunden
Zeile 16, Zeichen 5
Vielen Dank!
Hier der Quellcode des VB Skriptes, das aus Access ausgeführt werden soll:
Damit habe ich es versucht!
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "c:\Skript\1_Make_Konfi.vbs"
End Sub
In Zeile 16, bleibt es hängen!
Set objFileRead =fso.OpenTextFile(dateiRead,1, ,-2)
Option Explicit
Const dateiWrite = "result.txt" 'Bezeichnung der Ergebnisdatei, ggfs. anpassen.
Dim dateiRead 'Bezeichnung der Ausgangsdatei, ggfs. anpassen.
Dim fso, objFileRead, objFileWrite ' Deklaration I/O
Dim i, j, k, p, trenner, ergZeile, legende , div, div_res, helpVar 'Lauf- bzw. Hilfsvariablen
ReDim zeilenRead(100000) 'Ausgangsdatei hier auf 100.000 Zeilen beschränkt, bei Bedarf anpassen.
ReDim dynamErgZeile(11) 'dynamische Ergebniszeile, schreibt Zeilenweise die Ergebnisdatei.
dateiRead = InputBox("Bitte Ausgangsdatei angeben:",,"read.txt")
Set fso = CreateObject("Scripting.FileSystemObject")
'Existiert Datei?
If fso.FileExists(dateiRead) then
Set objFileRead =fso.OpenTextFile(dateiRead,1, ,-2)
' Liest die Ausgangsdatei zeilenweise in das Array "zeilenRead"
while not objFileRead.AtEndOfStream
if i=0 Then
legende = objFileRead.ReadLine
Else
zeilenRead(i-1) = objFileRead.ReadLine
end if
i=i+1
Wend
ReDim Preserve zeilenRead(i-2) ' Schneidet die Array-Größe nach Bedarf zu, um unnötige Speicherverschwendung zu verhindern
MsgBox "Ausgangsdatei enthält " & i-1 & " Zeilen zur Verarbeitung."
Else
Wscript.Echo "Datei " & dateiRead & " nicht gefunden! Bitte ggfs. Bezeichnung der Ausgangsdatei anpassen!"
End If
objFileRead.Close
Set objFileWrite=fso.OpenTextFile(dateiWrite,2, ,0)
' Arbeitet zeilenweise. Trennt jede eingelesene Zeile, baut sie um, ergänzt und schreibt in Textdatei rein
for j = 0 to ubound(zeilenRead)
trenner = Split(zeilenRead(j), ";")
If (strComp(trenner(2),Chr(34)&"Binär"&Chr(34)))=0 Then 'Binaer
dynamErgZeile(0)="Binaer"
else 'Analog
dynamErgZeile(0)=trenner(2)
end if
dynamErgZeile(1)=trenner(0)
dynamErgZeile(1)=Replace(dynamErgZeile(1),"||","§§")
dynamErgZeile(2)="READ"
dynamErgZeile(3)=trenner(1)
If (strComp(trenner(2),Chr(34)&"Binär"&Chr(34)))=0 Then 'Binaer
dynamErgZeile(3)=Replace(dynamErgZeile(3),"""","")
trenner(5)=Replace(trenner(5),"""","")
dynamErgZeile(3)=Chr(34)&dynamErgZeile(3) & " " & trenner(5)&Chr(34)
dynamErgZeile(4)=""
else 'Analog
dynamErgZeile(4)=trenner(5)
end if
dynamErgZeile(5)=trenner(6)
dynamErgZeile(6)=trenner(7)
' Analog oder Binär
If (strComp(trenner(2),Chr(34)&"Binär"&Chr(34)))=0 Then 'Binär
dynamErgZeile(7)=";;"
dynamErgZeile(8)="VT_BOOL"
Else ' Analog
dynamErgZeile(7)=";;"
dynamErgZeile(8)="VT_R4"
End If
If j<400 Then ' was ist mit binär, wenn diese immerwieder zwischen durch stehen?
dynamErgZeile(9)="1000" ' Ersten 400 Zeilen '### vorher "1000,00" gewesen
Else
div=j/400
div=Split(div,",")
div_res = Cint(div(0)) + 1000
dynamErgZeile(9)=CStr(div_res) ' größer 400 Zeilen ### vorher & ",00"
End If
dynamErgZeile(10)=trenner(0)
dynamErgZeile(10)=Replace(dynamErgZeile(10),"||","/")
' Array zum String vereinen
for k = 0 to ubound(dynamErgZeile)-1
ergZeile=ergZeile & dynamErgZeile(k) & ";"
next
ergZeile=Replace(ergZeile,"""","") 'Anführungszeichen entfernen
ergZeile=left(ergZeile, len(ergZeile) -1) 'letztes Semikolon entfernen
' Zeile in Textdatei schreiben
objFileWrite.WriteLine ergZeile
' Werte löschen, damit nächste Zeile geschrieben werden kann
Erase trenner
ergZeile=""
next
objFileWrite.Close
MsgBox "Zeilen der Ausgangsdatei: " & i-1 & " - Verarbeitete Zeilen in Ergebnisdatei: " & j
| |
Re: Ein VB Skript aus Access heraus starten | | | Autor: powerzone3000 | Datum: 05.05.14 08:52 |
| Hallo,
das ist nur eine Vermutung, aber ich denke es könnte am Arbeitsverzeichnis (Working Directory) liegen.
Versuch mal entweder den Pfad zur read.txt komplett anzugeben (z. B. c:\Skript\read.txt),
oder das CurrentDirectory des Shell-Objekts auf deinen Script-Pfad zu setzen:
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "c:\Skript"
WshShell.Run "c:\Skript\1_Make_Konfi.vbs" | |
Re: Ein VB Skript aus Access heraus starten | | | Autor: Ray01 | Datum: 06.05.14 16:13 |
| Danke!
deine Vermutung war richtig.
Es funktioniert, Danke! | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|