| |
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
| |
| 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! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|