Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1768to1772
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Textfile variabel deklarieren

Textfile variabel deklarieren
13.07.2020 15:54:43
Marc
Hallo liebe Forumsgemeinde,
ich erstelle ein Filesystem-Object und möchte anschließend mehrere Texfiles in Folge erstellen. Dabei ist mir die Anzahl der benötigten Textfiles vorher jedoch nicht bekannt. Die Objektvariablen müssen natürlich unterschiedlich deklariert werden, damit ich später gezielt Text hinzufügen kann in den jeweiligen Textfile. Die Deklaration soll sich durch eine fortlaufende Nummerierung unterscheiden. In etwa so:
Textfile1
Textfile2
Textfile3
...
Mit folgendem Code klappt es leider nicht:
Dim fso As Object ' Textfileobject
Set fso = CreateObject("Scripting.FileSystemObject")
For x = 1 to 3
Dim textfile & x As Object
Set textfile & x  = fso.CreateTextFile(Pfad & "\" & Gesellschaft & "\" & Periode & ".csv")
Next x
Ich vermute, dass ich x in irgendwelche Sonderzeichen setzen muss aber ich weiß nicht welche.
Wäre super wenn mir jemand einen Tipp geben könnte.
VG,
Marc

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textfile variabel deklarieren
13.07.2020 16:25:29
peterk
Hallo
Benutze eine Collection ...

Sub ManyFiles()
Dim AllMyFiles As New Collection
Dim fso As Object
Dim textFile As Object
Dim x As Long
Set fso = CreateObject("Scripting.FileSystemObject")
For x = 1 To 3
Set textFile = fso.CreateTextFile("C:\Users\....\Documents\" & x & ".csv")
AllMyFiles.Add Item:=textFile, Key:="File" & x
Next x
For x = 1 To 3
AllMyFiles("File" & x).WriteLine ("This is a test." & x)
Next x
For x = 1 To AllMyFiles.Count
AllMyFiles(x).Close
Next x
End Sub

AW: Textfile variabel deklarieren
13.07.2020 22:44:56
Marc
Hallo Peter,
vielen Dank für den hilfreichen Ansatz. Ich habe mal versucht das mit einem Dictionary umzusetzen, da ich in meinem Code ohnehin bereits ein solches genutzt habe. Allerdings bekomme ich den folgenden Fehler wenn ich den unten abgebildeten Code laufen lasse:
"Laufzeitfehler 451 ... Let-Prozedur der Eigenschaft ist nicht definiert und Get-Prozedur hat kein Objekt zurückgegeben"
Sub Dict()
Dim fso As Object, textFile As Object, DicObj As Object, spalte As Range, zelle As Object, ws  _
As Worksheet, Count As Long, x As Long, dItems
Set fso = CreateObject("Scripting.FileSystemObject")
Set DicObj = CreateObject("Scripting.Dictionary")
Set ws = ThisWorkbook.Worksheets(1)
Set spalte = ws.Range("A:A")
For Each zelle In spalte
If zelle.Value = vbNullString Then
Exit For
ElseIf Not DicObj.Exists(zelle.Value) Then
Set textFile = fso.CreateTextFile("C:\Users\Herbert_Meisel\Desktop\Lizenzen Test\Textfile" &  _
DicObj.Count & ".csv")
DicObj.Add zelle.Value, textFile
Else
End If
Next zelle
dItems = DicObj.Items
For x = 0 To DicObj.Count - 1                     'Hier wird der Fehler angezeigt!
DicObj.Items(x).WriteLine ("This is a test.")
DicObj.Items(x).Close
Next
End Sub

VG,
Marc
Anzeige
AW: Textfile variabel deklarieren
14.07.2020 09:19:10
peterk
Hallo Marc

Dim k As Variant
For Each k In DicObj.keys
DicObj(k).WriteLine ("This is a test.")
DicObj(k).Close
Next

AW: Textfile variabel deklarieren
14.07.2020 09:23:13
Marc
Tausend Dank! ;)
AW: Textfile variabel deklarieren
14.07.2020 15:06:55
Marc
Hallo Peter,
das Befüllen des Dictionary und das Schreiben in die einzelnen Textfiles klappt nun problemlos. Ein Problem bekomme ich allerdings wenn ich versuche später wieder auf die einzelnen Elemente (Keys und Items) innerhalb des Dictionary zuzugreifen bzw. diese anhand bestimmter Merkmale zu identifizieren.
Über welche Eigenschaft oder mit Hilfe welcher Methode kann ich die Elemente des Dictionary identifizieren und mir beispielsweise einen Index oder eine Position ausgeben lassen mit der ich gezielt auf einzelne Elemente zugreifen kann bzw. diese auslesen kann?
VG,
Marc
Anzeige
AW: Textfile variabel deklarieren
14.07.2020 15:27:25
peterk
Hallo
Du greifst über den KEY auf das Dictionary zu.
DicObj.Add zelle.Value, textFile = DicObj.Add Key:=zelle.Value, Item:=textFile
Wenn in deiner Spalte A Zahlen stehen z.B. 2355 dann kannst du direkt mit DicObj(2355) den Wert auslesen (in unserem Fall ist es aber ein Objekt!). Hast Du Text z.B. 'Hallo' dann mit DicObj("Hallo") (Vorsicht case sensitive!).
Mit der "For each" Schleife kannst Du Dir alles anzeigen lassen
For Each k In DicObj.keys
debug.print k, IsObject(DicObj(k))
Next
Eine gute Seite (auf Englisch)
https://excelmacromastery.com/vba-dictionary/
Peter
Anzeige
AW: Textfile variabel deklarieren
14.07.2020 16:00:07
Marc
Hallo Peter,
ich danke Dir vielmals! Jetzt hat es klick gemacht. ;)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige