VBS:Datei einlesen und in Arrayschreiben

Tach Community,

in VB,VBS und VBA fühle ich mich leider so gar nicht zuHause.
leider muss ich ein kleines Script produzieren, welches u.A. auf
folgende funktion zurückgreifen muss… Und leider weiss ich nicht,
wie man das in VBS erledigt:

Eine Textdatei wie folgt auslesen und in eine hashmap schreiben:

daten.txt

uid;vorname;nachname;str;hsnr;plz;ort
1;Thomas;meinNachname;;;12345;TestOrt
2;Hannes;meinNachname;Hauptstr.;12;12345;TestOrt

usw…

array() =>
in PHP syntax->

$daten["uid"]["vorname"] = 
$daten["uid"]["nachname"] = 
$daten["uid"]["str"] = 

soll also rauskommen:

var daten[1]["vorname"] = "Thomas"
var daten[1]["nachname"] = "meinNachname"
var daten[1]["str"] = ""
var daten[1]["hsnr"] = ""
var daten[1]["plz"] = "12345"
var daten[1]["ort"] = "Testort"

var daten[2]["vorname"] = "hannes"
var daten[2]["nachname"] = "meinNachname"
var daten[2]["str"] = "Hauptstraße"
var daten[2]["hsnr"] = "12"
var daten[2]["plz"] = "12345"
var daten[2]["ort"] = "Testort"

zu beachten:
erste zeile ist komplette feldbezeichnung
die daten sind immer semikolonsepariert und der datensatz ist
mit einem /r/n abgeschlossen.

kann mir da jemand helfen ?

das ganze soll als .VBS laufen. Also praktisch per doppelklick
aufrufbar sein.

ganz herzlichen dank

Gruss

PixelKoenig

Hallo,

in VBS fühle ich mich auch nicht richtig wohl, aber mal sehen, ob Dir das schon mal weiter hilft.

Die Daten stehen am Ende im zweidimensionalen Feld ‚Gitter‘.

Gruß Rainer

Dim Text, Zeile, Feld, r, c
Dim Gitter

Lesen "C:\Test.txt"

Zeile = Split(Text, VbCrLf)
Feld = split(Zeile(0), ";")

Redim Gitter(UBound(Zeile), UBound(Feld))

For r=0 to Ubound(Zeile)
 Feld = split(Zeile(r), ";")
 'Achtung! Feld wird jedes mal neu geschrieben!'
 For c=0 to Ubound(Feld)
 Gitter(r,c) = Feld(c)
 Next
Next

Sub Lesen (Datei)
 Dim FileNow, a, b
 Dim MyFSO
 Set MyFSO = CreateObject("Scripting.FileSystemObject") 
 Set a = MyFso.GetFile(Datei)
 b = a.Size
 Set f = Myfso.OpenTextFile(Datei, 1, True)
 Text = f.Read(b)
 f.Close
End Sub

sexy :smile:
hi,

danke… das tut genau DAS ! :smile:
wenn du jetzt noch weisst wie ich einen dateidialog oeffne…
nenn ich dich goettlich :smile:

problemchen… dass Application.GetOpenFilename geschichten nur innerhalb von officeapplikationen laufen… also VBA code ist.
ich brauchs aber ausserhalb…und habe nix gefunden… weisst du da abhilfe?

gruss

PixelKoenig

Hi,

wenn du jetzt noch weisst wie ich einen dateidialog oeffne…

In VBS weiß ich das nicht.

problemchen… dass Application.GetOpenFilename geschichten
nur innerhalb von officeapplikationen laufen… also VBA code
ist.
ich brauchs aber ausserhalb…und habe nix gefunden… weisst
du da abhilfe?

Für VB verschiedene, aber für VBS nicht.
Leider kann man mit VBS auch keine API aufrufen.

Fenster sind nicht so das Ding von VBS, ich kann in einer MessageBox Daten anzeigen, mit einer Inputbox Daten übergeben, das war’s auch schon.

Ob es mit VBS überhaupt eine Möglichkeit gibt, einen Commondialog zu öffnen, bin ich nicht sicher. In der Hilfe (Script56.chm) habe ich keinen Hinweis darauf entdeckt.

Gruß Rainer

Schade. Danke
Hi Rainer,

Ob es mit VBS überhaupt eine Möglichkeit gibt, einen
Commondialog zu öffnen, bin ich nicht sicher. In der Hilfe
(Script56.chm) habe ich keinen Hinweis darauf entdeckt.

Die Vermutung hatte ich mitlerweile auch schon…
Naja… VBS ist ja auch nur ne abgespeckte Variante von VB.
Aber ich weigere mich Excel als Container zu benutzen…
Davor gruselts mich ehrlich gesagt.

Naja. Mach ichs mit ner InputBox. So hatte ich das bisher gelöst.
Vielen Dank für Deine Hilfe.

Gruss

PixelKoenig

Hi,

Die Vermutung hatte ich mitlerweile auch schon…
Naja… VBS ist ja auch nur ne abgespeckte Variante von VB.
Aber ich weigere mich Excel als Container zu benutzen…
Davor gruselts mich ehrlich gesagt.

Naja. Mach ichs mit ner InputBox. So hatte ich das bisher
gelöst.
Vielen Dank für Deine Hilfe.

mach langsam, ich habe etwas gefunden, bin aber noch nicht ganz fertig.
Etwas Geduld, ich glaube, das wird doch noch etwas. :smile:

Gruß Rainer

Hi Rainer,

mach langsam, ich habe etwas gefunden, bin aber noch nicht
ganz fertig.
Etwas Geduld, ich glaube, das wird doch noch etwas. :smile:

Oh Klasse :smile:
Danke vorab für die Mühe :smile:
Lasse die Hoffnung noch nicht fahren :smile:

gruss

PK

Werde ich auch göttlich genannt? *vorfreu*

danke… das tut genau DAS ! :smile:
wenn du jetzt noch weisst wie ich einen dateidialog oeffne…
nenn ich dich goettlich :smile:

problemchen… dass Application.GetOpenFilename geschichten
nur innerhalb von officeapplikationen laufen… also VBA code

Hallo PixelKoenig,

so läppischen Code schreib ich doch einfach so runter in 1 Minute *sehr gähn* :wink:))

Bei mir, WinXP lief der Code in einer vbs problemlos.

Keine Ahnung was für ein „Net“-Dingsbum ich habe. @Rainer, wie krieg ich das raus? Ich habe in dem Link como siempre nur wenig kapiert.
Und auch „SAFRCFileDlg.FileOpen“ sah ich noch nie hier.

https://www.administrator.de/index.php?content=55751

Set objOpenDialog = CreateObject("SAFRCFileDlg.FileOpen") 
intReturn = objOpenDialog.OpenFileOpenDlg 
If intReturn Then 
 strFilePath = objOpenDialog.FileName 
msgbox strfilepath 
Else 
 MsgBox("Keine Datei ausgewählt!") 
 Wscript.Quit 
End If

Ps: *hüstel, ich will ja nicht zunahe treten, aber der Link war der dritte angezeigte Treffer bei google.
Gruß
Reinhard

Ich nenn dich ‚Fee‘ ok? *fg
tach reinhard,

so läppischen Code schreib ich doch einfach so runter in 1
Minute *sehr gähn* :wink:))

bin leider redmond nicht so nah… *neidischGuckt*

Bei mir, WinXP lief der Code in einer vbs problemlos.

das ist ja ejakulativ… das funzt ja…
*voelligBegeistertBin*

Ps: *hüstel, ich will ja nicht zunahe treten,

gehste mir vonne pelle *schubs*

aber der Link
war der dritte angezeigte Treffer bei google.

na und… hatte ich halt nicht die richtigen suchworte.
warste halt besser. trotzdem kanns ja nur einen gott geben. und das
is nun schon dann der rainer…
aber fee ist ja auch nicht schlecht. oder? *fg

Gruß
Reinhard

ich danke dir ganz herzlich :smile:
hat mir sehr geholfen.

gruss

Pixel

Hallo Reinhard,

@Rainer, wie krieg ich das raus?

Bei mir liegt in ‚Verwaltung‘ die Datei ‚Microsoft .NET Framework 2.0-Konfiguration‘, daraus schließe ich, daß das Framework 2.0 installiert ist. :smile:

Ps: *hüstel, ich will ja nicht zunahe treten, aber der Link
war der dritte angezeigte Treffer bei google.

Ja womit hast Du denn gesucht? Ich hatte es auch immer noch nicht gefunden.

Gruß Rainer

Hallo Pixelkönig,

so läppischen Code schreib ich doch einfach so runter in 1
Minute *sehr gähn* :wink:))

bin leider redmond nicht so nah… *neidischGuckt*

Ja, wir hier in Redmond haben grad 25 Grad und strahlenden Sonnenschein, wie issen das grad bei euch so in unrer Besatzungszone? :smile:

(Mannomann war heute hier wieder Shitwetter wie es in Hambuerg oder London chonisch sein soll *fluch*)

Bei mir, WinXP lief der Code in einer vbs problemlos.

das ist ja ejakulativ… das funzt ja…
*voelligBegeistertBin*

Freut mich wenn es klappt, bei Rückfragen warum es bei mir läuft und bei dir nicht hätte ich auf dem Schlauch gestanden:smile:

Ps: *hüstel, ich will ja nicht zunahe treten,

gehste mir vonne pelle *schubs*

*grins*

aber der Link
war der dritte angezeigte Treffer bei google.

na und… hatte ich halt nicht die richtigen suchworte.
warste halt besser.

ja, ich hatte raffinierte Suchwörter dwei dück, vbs dateidialog *kicher*

Besser ist bei Googlesuche manchmal möglich, meist ist aber was ganz anderes, wenn ich an einer Codestelle festhänge seit Stunden und nicht weiterkomme dann versuche mit google was zu finden, kannste vergessen, äißerst miese Trfferquote, seit Jahren festgestellt.

Suche ich unbefangen, also grad nicht das Problem um was es geht im Kopf zu haben, das blockiert dann die Suchwortphantasie, sind meine Treffer bei Google um Welten besser, schneller gefunden usw.
Schon sehr oft erlebt.

trotzdem kanns ja nur einen gott geben.
und das
is nun schon dann der rainer…
aber fee ist ja auch nicht schlecht. oder? *fg

*hmmh* mal im Deutschbrett anfragen ob es nicht auch Feer oder so gibt*gg*

ich danke dir ganz herzlich :smile:
hat mir sehr geholfen.

Gerne.

Gruß
Reinhard

Hallo Rainer,

@Rainer, wie krieg ich das raus?

Bei mir liegt in ‚Verwaltung‘ die Datei ‚Microsoft .NET
Framework 2.0-Konfiguration‘, daraus schließe ich, daß das
Framework 2.0 installiert ist. :smile:

bei Win98 ging es ja noch mit der Systemsteuerung aber jetzt bei WinXP, mit dieser Verwaltung, diesen komischen Diensten usw., irgendwie betrachte ich es für mich als verlorene zeit mich da einzuarbeiten für was das alles ist.

Und ich will in WinXP Vbs-Code schreiben der läuft und nicht mich drum kümmern ob ich da Net Framework 2.0 hab oder 3.0.
Ich weiß doch eh nicht was das ist.
Und grad in der „Verwltung“ wimmelt es von so Dingern wo ich überhaupt nicht weiß für was die sind.
Und weil das so viele sind, unternehme ich keine Anstalten mich da versuchen schlau zu machen.

naja, zumindest weiß ich jetzt wie ich die Version von einem unbekannten Ding rauskriege :smile:

Ps: *hüstel, ich will ja nicht zunahe treten, aber der Link
war der dritte angezeigte Treffer bei google.

Ja womit hast Du denn gesucht? Ich hatte es auch immer noch
nicht gefunden.

http://www.google.de/search?hl=de&num=100&q=%2Bvbs+%…

Was schade ist, vor einigen Jahren hatte ich mal gezielt nach Suchmaschinen gesucht und hatte eine sehr schöne Liste von Ihnen und da ich grundsätzlich was gegen Marktbeherrscher habe habe ich damals nahezu nie gegoogelt.

Ich meine jetzt gar nicht metager.de, mamma.com (Die Mutter aller Suchmaschinen), askjeeves, nö, bessere und bessere als google in manchen Beziehungen.

Gruß
Reinhard, der sich jetzt die Tränenschale für die ganzen schönen Suchmaschinenlinks reichen läßt :smile:

Gruß
Reinhard

Hallo Pixelkönig,

probiere mal folgende Funktion aufzurufen und schau mal ob es klappt. Bei mir unter WinXP läuft es astrein :wink:

Function GetFileName( myDir, myFilter )
Dim objDialog
Set objDialog = CreateObject( "UserAccounts.CommonDialog" )
If myDir = "" Then
 objDialog.InitialDir = CreateObject( "WScript.Shell" .SpecialFolders( "MyDocuments" )
Else
 objDialog.InitialDir = myDir
End If
If myFilter = "" Then
 objDialog.Filter = "All files|\*.\*"
Else
 objDialog.Filter = myFilter
End If
If objDialog.ShowOpen Then
 GetFileName = objDialog.FileName
Else
 GetFileName = ""
End If
End Function

Aufrufen kannst du die Function, mit oder ohne Parameter.
Zum Bsp.

WScript.Echo "Selected file: " & GetFileName( "C:\", "" )
WScript.Echo "Selected file: " & GetFileName( "", "Text files|\*.txt" )
WScript.Echo "Selected file: " & GetFileName( "", "MS Office documents|\*.doc;\*.xls;\*.pps" )
WScript.Echo "Selected file: " & GetFileName( "C:\WINDOWS", "Bitmaps|\*.bmp" )

MfG Alex