Array direkt in eine Textdatei ausgeben



Excel-Version: 10.0 (Office XP)
nach unten

Betrifft: Array direkt in eine Textdatei ausgeben
von: Buxl
Geschrieben am: 13.06.2002 - 09:47:45


Hallo,

Ich hab da ein kleines Problem mit der Spaltenzahl in Excel. ICh moechte naemlich Daten in Excel bearbeiten lassen (Makro) und dann in eine Textdatei speichern. Dummerweise brauch ich da mehr Spalten. Also hab ich mir gedacht, so ein Array von 900*100 zu basteln und direkt in eine Textdatei auszugeben und dann zu speichern. Aber wie bring ich den meinem Makro das bei, dass er den Array in eine Textdatei ausspucken soll?

Fuer jede Hilfe bin ich sehr dankbar

Buxl


nach oben   nach unten

Re: Array direkt in eine Textdatei ausgeben
von: Rolf, Lgh.
Geschrieben am: 14.06.2002 - 18:29:40

Hallo,
http://www.excel-tutorial.de/: Thema: Join & Split - Arrays und Zeichenketten
und (gilt auch für Excel!):

Option Explicit

'Zeichenketten komfortabel bearbeiten mit der Split()-Funktion
'Versionen: Access 2000 und 2002

'Bei der Entwicklung von Datenbanken oder einzelnen _
 Funktionen stehen Sie immer wieder vor dem Problem, _
 eine Zeichenkette in ihre einzelnen Bestandteile _
 zerlegen zu müssen. Zum Beispiel "Dr. Peter Hoffmann" _
 in "Titel", "Vorname" und "Nachname". Ab Access 2000 _
 können Sie dazu die wenig bekannte Funktion "Split()" _
 einsetzen, deren Arbeitsweise Sie zunächst am einfachsten _
 durch die Eingabe folgender Funktion in einem beliebigen _
 Modul und den Aufruf über den Direktbereich erforschen:

Function SplitTest(strText As String) As Integer
  Dim As Variant, i As Integer
  X = Split(strText)
  For i = 0 To UBound(X)
    Debug.Print X(i)
  Next i
  SplitTest = UBound(X) + 1
End Function

'Die Funktion erwartet als Parameter eine beliebige _
 Zeichenkette. Diese wird dann über "Split()" in ein _
 Array konvertiert. "UBound()" gibt anschließend _
 Auskunft, wie viele Elemente das Array beinhaltet. _
 Gezählt wird ab "0", so dass "UBound() +1" die _
 Anzahl der Wörter in der Zeichenkette liefert. _
 Diesen Wert verwenden wir hier, um die einzelnen _
 Wörter in einer Schleife aus dem Array im _
 Direktbereich auszugeben. Die Eingabe von

Print SplitTest("Dies ist ein Test!")

'führt zum Beispiel zu folgendem Ergebnis:
'Dies
'ist
'Ein
'Test!
'4
'
'Um nun beispielsweise nur die Anzahl der Wörter in _
 einer Zeichenkette zu zählen, setzen Sie "Split()" _
 in der folgenden Funktion ein:

Function SplitCount(strText As String) As Integer
  Dim As Variant
  X = Split(strText)
  SplitCount = UBound(X) + 1
End Function

'Das Ergebnis ist die Anzahl der Wörter oder "0", wenn _
 die Zeichenkette leer ist. Ähnlich einfach können Sie _
 mit "Split()" bestimmte Wörter aus einer Zeichenkette _
 extrahieren:

Function SplitExtract(strText As String, _
                      intNum As Integer) As String
  Dim As Variant
  X = Split(strText)
  If intNum > 0 And intNum - 1 <= UBound(X) Then
    SplitExtract = X(intNum - 1)
  Else
    SplitExtract = ""
  End If
End Function

'wenn Sie im Direktbereich einmal

Print SplitExtract("Dr. Peter Hoffmann", 2)

'eingeben, wird als Ergebnis erwartungsgemäß "Peter" _
 ausgegeben. Die Kombination dieser beiden Funktionen _
 können Sie beispielsweise dazu einsetzen, um beim _
 Import aus anderen Datenbanken Titel, Vornamen und _
 Nachnamen von Adressen korrekt in Ihre Tabelle zu _
 schreiben:

If SplitCount(strInput) = 3 Then
  '.....
  rs("Titel") = SplitExtract(strInput, 1)
  rs("Vorname") = SplitExtract(strInput, 2)
  rs("Nachname") = SplitExtract(strInput, 3)
  '.....
Else  'nur Vorname und Nachname
  '.....
  rs("Vorname") = SplitExtract(strInput, 1)
  rs("Nachname") = SplitExtract(strInput, 2)
  '.....
End If

'Die gezeigten Funktionen gehen jeweils davon aus, _
 dass zwischen den Wörter immer ein Leerzeichen als _
 Trennzeichen vorhanden ist. Oftmals werden aber andere _
 Trennzeichen wie beispielsweise Kommas oder Semikolons _
 verwendet. Soll "Split()" nach diesen Trennzeichen _
 splitten, können Sie das über den zweiten Parameter _
 angeben. Die folgende Funktion liefert beispielsweise _
 die einzelnen Feldnamen aus einer CSV-Kopfzeile _
 "Nachname;Vorname;Strasse;PLZ;Ort" als Array:

Function SplitCSVFieldnames(strText As String, _
                            strSeparator As String) As Variant
  Dim As Variant
  X = Split(strText, strSeparator)
  SplitCSVFieldnames = X
End Function

'Ein Aufruf wie zum Beispiel der folgende erlaubt _
 dann die Abarbeitung der einzelnen Feldnamen je nach _
 Anforderung:

Sub Test()
'.....
  Open "Test.txt" For Input As #1
  Line Input #1, strInput
  arrFelder = SplitCSVFieldnamesd(strInput, ";")
  strFeldname1 = arrFelder(0)
  strFeldname2 = arrFelder(1)
  strFeldname3 = arrFelder(2)
  '.....
End Sub


Gruss Rolf
 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Array direkt in eine Textdatei ausgeben"