blob 10 Geschrieben 26. Oktober 2009 Melden Teilen Geschrieben 26. Oktober 2009 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 :-( Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 26. Oktober 2009 Melden Teilen Geschrieben 26. Oktober 2009 Moin, was hast du denn genau vor? (Ja, ich weiß, wieder die böse Frage nach dem Ziel. ;-) Wenn es sich um größere Datenmengen handelt, wäre evtl. der Zugriff auf die Eingabedatei per ADO schlauer. Gruß, Nils Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 26. Oktober 2009 Melden Teilen Geschrieben 26. Oktober 2009 Wieso importierst du diese Datei nicht direkt nach Excel? Zitieren Link zu diesem Kommentar
blob 10 Geschrieben 26. Oktober 2009 Autor Melden Teilen Geschrieben 26. Oktober 2009 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 Zitieren Link zu diesem Kommentar
blob 10 Geschrieben 26. Oktober 2009 Autor Melden Teilen Geschrieben 26. Oktober 2009 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? Zitieren Link zu diesem Kommentar
blob 10 Geschrieben 27. Oktober 2009 Autor Melden Teilen Geschrieben 27. Oktober 2009 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 Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 27. Oktober 2009 Melden Teilen Geschrieben 27. Oktober 2009 Moin, warum regelst du das nicht einfach über eine Datenbank statt über ein Excel-Sheet? Da könnte dein erstes Skript direkt hinschreiben. Gruß, Nils Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.