Jump to content

VBS: txt-Datei in 3 dimensionales Array einlesen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo @ *!

 

Ich komme einfach nicht drauf, wie ich dynamisch ein 3 dimensionales Array erstellen kann. Eine TXT Datei wird ausgelesen und soll in diesem Array landen, diese ist wie folgt aufgebaut:

 

\\srv\pfad1\pfad2;mustermann;34,467657856

\\srv\pfad1\pfad3;mustermann1;334,4456757856

\\srv\pfad1\pfad4;mustermann2;1,321443543

\\srv\pfad1\pfad5;mustermann3;4,678676777

... usw

 

In der Reihe ist es also Punkt-Komma separiert. So soll es in einem Array landen, damit ich es nach Excel schreiben kann:

 

Array(0,0) = \\srv\pfad1\pfad2

Array(0,1) = mustermann

Array(0,2) = 34,467657856

Array(1,0) = \\srv\pfad1\pfad3

Array(1,1) = mustermann2

Array(1,2) = 334,4456757856

usw

 

Da ich nicht weiss wieviele Zeilen in einer TXT Datei stehen, muss das Array dynmaisch sein und am besten eine Variable haben, die hochgezählt wird damit ich beim Excel Import die Range angeben kann.

 

Ich weiss wie ich es für ein eindimensionales Array hinbekommen würde, bekomme es aber nicht auf 3 Spalten umgebogen :-(

Link zu diesem Kommentar

Also: Mein VB Script ermittelt auf einem Fileserver die erste Ordnerebene, liest den Pfad, die ACL und die Größe des Verzeichnis aus. Das wird dann in eine Textdatei geschrieben, siehe ganz oben an meinem Beispiel wie es aussieht. Nachdem ein Ordner abgearbeitet ist, wird in die TXT ein vbnewline hinzugefügt und der nächste Ordner wird "untersucht". Ich könnte die Werte direkt in Excel schreiben, aber aus 2 Gründen nicht: a) ich will die Werte erst Kontrollieren bevor die Excel Tabelle gefüllt wird und b) bis alle Ordner untersucht wurden, gehen schonmal 12 Stunden ins Land.

 

Und die txt Dateien in Excel per Hand importieren ginge auch, aber es sind einige Worksheets => dauert lange da es ca. 30 TXT Dateien sind => ergo darum hat mein Script die "Importiere es mir in Excel" - Funktion an der ich gerade dran bin ;-) ich muss diese Ergebnis TXT Dateien die mir mein Script liefert (siehe wieder oben) in ein Array schreiben... da es 3 Spalten in Excel wären muss ich die TXT in ein dreidimensionales Array einlesen.... Array(0,x) soll die Pfade enthalten (also Spalte A in Excel), Array(1,x) soll den Usernames beinhalten (also Spalte B in Excel) und Array(2,x) soll die Ordnergrößen beinhalten (also Spalte C in Excel).

 

Ich will es jetzt auch nicht so kompliziert machen und das Script posten da es mehrere hundert Zeilen lang ist und ich ja nur wissen will: ich habe eine TXT Datei mit 3 Variabeln in einer Zeile, getrennt durch ";" und danach neue Zeile und wieder die 3 Variabeln getrennt durch ";" usw

Link zu diesem Kommentar

Nachtrag: Habe ein Beispiel gefunden mit einem statischen Array. Man müsste nur noch hinbekommen, das die Werte aus der TXT Datei geholt werden und das Array dynamisch ermittelt wird, damit beim einfügen in Excel die Größe der Range ermittelt werden kann:

 

     ' Create an array to set multiple values at once.
     Dim saNames(5, 2) As String
     saNames(0, 0) = "John"
     saNames(0, 1) = "Smith"
     saNames(1, 0) = "Tom"
     saNames(1, 1) = "Brown"
     saNames(2, 0) = "Sue"
     saNames(2, 1) = "Thomas"
     saNames(3, 0) = "Jane"

     saNames(3, 1) = "Jones"
     saNames(4, 0) = "Adam"
     saNames(4, 1) = "Johnson"

   ' Fill A2:B6 with an array of values (First and Last Names).
     oSheet.Range("A2", "B6").Value = saNames

 

Aber da scheitere ich schon... hat da jmd einen Lösungsansatz?

Link zu diesem Kommentar

So, habe es nun anderst gelöst:

 

Set ocountListe = CreateObject("Scripting.FileSystemObject")
Set ocountListe2 = ocountListe.OpenTextFile(strFile, ForReading)

Do While ocountListe2.AtEndOfStream <> True 		

m = m + 1

strreadfinalline = ocountListe2.ReadLine	
arrayinhalt = Split(strreadfinalline, ";")

oExcel.cells(m, 1).value = arrayinhalt(0)
oExcel.cells(m, 2).value = arrayinhalt(1)
oExcel.cells(m, 3).value = arrayinhalt(2)

n = m
Loop

 

Thx @ all

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...