Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1076to1080
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

txt file in EXCEL einlesen

txt file in EXCEL einlesen
29.05.2009 12:45:12
Volker
Hallo Experten,
ich versuche mch derzeit im Automatischen einlesen von TXT-files in EXCEL.
Dazu benutze ich den Befehl:
Sheets(aktblatt).Columns(1).TextToColumns _
Destination:=Range("A1"), _
DataType:=xlFixedWidth, _
FieldInfo:=txtarray, _
TrailingMinusNumbers:=True
Wobei txtarray beliebige Arrayfolge ist, die ich automatisch generieren kann,
besispeilsweise so: "Array(Array(0, 1), Array(8, 1), Array(20, 1), Array(32, 1), Array(44, 1))"
Nun bekomme ich aber eine Fehlermeldung, die damit zusammenhängt, dass mein txtarray nicht der richtige Datentyp für FieldInfo ist.
Doppelte Frage:
a) Welchen Datentyp braucht FieldInfo? (EXCEL hilfe spricht von Variant, wasn icht wirklich weiterhilft ...)
b) Wie kann ich den Datentyp von txtarray (derzeit String) so umwandeln, dass es klappt?
Vielen Dank,
Volker

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
FieldInfo als Variant
29.05.2009 13:22:49
Erich
Hi Volker,
probiers mal ohne Gänsefüße, dafür mit
Dim varArr 'as variant
varArr = Array(Array(0, 1), Array(8, 1), Array(20, 1), Array(32, 1), Array(44, 1))
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: FieldInfo als Variant
29.05.2009 14:22:00
Volker
Hallo Kamp-Lintfort, hallo Erich!
Vielen Dank!
Ganau das hatte ich auch vermutet -
Frage ist aber: wie bekomme ich denn die Gänsefüße weg?
Bisher kann ich aus meiner txt-Datei die jeweils erste Zahl der Arrays im Array ermitteln, also im Beispiel die 0, 8, 20, 32, 44. Diese habe ich in array-Variablen gespeichert, intcolbreit(i) (im Beispiel i=0 to 4), also intcolbreit(2) = 20.
Nun baue ich den Array mir über eine Schleife zusammen. Ich kenne dafür nur Stringverknüpfungsfunktionen. Dann ist am Ende eben txtarray mit Anführungszeichen.
Wie kann ich dies nun sozusammenbauen, dass keine Anführungszeichen da sind?
Viele Grüße,
Volker
Viele Grüße,
Volker
Anzeige
FieldInfo-Array füllen
29.05.2009 16:26:29
Erich
Hi Volker,
so etwa sollte es funzen:

Sub Makro1()
Dim intcolbreit(0 To 5) As Integer
Dim varA 'As Variant
Dim lngZ As Long, ii As Long
lngZ = UBound(intcolbreit)                      ' Anzahl Pos.
ReDim varA(lngZ)                                ' Array dimensionieren
For ii = 0 To lngZ
varA(ii) = Array(intcolbreit(ii), 1)         ' 1 für Typ Standard
Next ii
Selection.TextToColumns Destination:=Cells(1, 3), DataType:=xlFixedWidth, _
FieldInfo:=varA, TrailingMinusNumbers:=True
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort und: Schöne Pfingsten!

Anzeige
AW: FieldInfo als Variant
29.05.2009 16:35:26
Tino
Hallo,
nicht als String, sondern als Area
Beispiel.

Sub Beispiel()
Dim maAr
maAr = Array(Array(1, 1), Array(2, 1), Array(3, 2), Array(4, 1))
Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=maAr, TrailingMinusNumbers:=True
End Sub


Gruß Tino

AW: Array - nicht Area (@Tino)
29.05.2009 16:41:41
Erich
ohne weiteren Text,
aber mit besten Wünschen für die kommenden Feiertage!
Grüße von Erich aus Kamp-Lintfort
Anzeige
ok. wünsche ich auch o.T.
29.05.2009 16:55:50
Tino
AW: FieldInfo als Variant
29.05.2009 17:31:10
fcs
Hallo Volker,
die FieldInfo muss in einem 2-spaltigen Array zur Verfügung stehen.
Dies geht mit Schleifen zum Beispiel auch so.
Gruß
Franz

Sub aaSpaltenSplit()
Dim intcolbreit, aktblatt As String
Dim intI As Long, txtArray()
aktblatt = ActiveSheet.Name
intcolbreit = Split(Sheets(aktblatt).Range("A1"), ",")
ReDim txtArray(LBound(intcolbreit) To UBound(intcolbreit), 0 To 1)
For intI = LBound(intcolbreit) To UBound(intcolbreit)
txtArray(intI, 0) = Val(intcolbreit(intI))
Select Case Val(intcolbreit(intI))
Case 0, 10
txtArray(intI, 1) = 1 'Standard
Case 5
txtArray(intI, 1) = 2 'Text
Case 19
txtArray(intI, 1) = 4 'Datum TMJ
Case Else
txtArray(intI, 1) = 1 'Standard
End Select
Next
With Sheets(aktblatt)
.Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).TextToColumns _
Destination:=Range("A1"), _
DataType:=xlFixedWidth, _
FieldInfo:=txtArray, _
TrailingMinusNumbers:=True
End With
End Sub
'oder auch
Sub aaSpaltenSplit_var()
Dim intcolbreit, aktblatt As String
Dim intI As Long, txtArray()
Dim intcolTyp
aktblatt = ActiveSheet.Name
intcolbreit = Split(Sheets(aktblatt).Range("A1"), ",")
intcolTyp = Array(1, 2, 1, 4, 1, 1, 1)
ReDim txtArray(LBound(intcolbreit) To UBound(intcolbreit), 0 To 1)
For intI = LBound(intcolbreit) To UBound(intcolbreit)
txtArray(intI, 0) = Val(intcolbreit(intI))
txtArray(intI, 1) = intcolTyp(intI)
Next
With Sheets(aktblatt)
.Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).TextToColumns _
Destination:=Range("A1"), _
DataType:=xlFixedWidth, _
FieldInfo:=txtArray, _
TrailingMinusNumbers:=True
End With
End Sub


Anzeige
AW: FieldInfo als Variant
02.06.2009 15:45:33
Volker
Hallo Franz,
der Tipp den Array als Array zu belassen und nicht als Text nachzubauen war Gold wert.
Leider komme ich erst heute zu der Erkenntnis, da ich über Pfingsten weg war.
Herzlichen Dank und beste Grüße,
Volker
PS: Die Val-Funktion funkt in Deinem Code bei mir übrigens nicht, da die in meiner Version nur dann die Zahl ausliest, wenn der String mit Zahl anfängt. Das konnte ich aber lösen :-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige