Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Import txt bestimmte zeilen
#1
Hallo zusammen!

Ich importiere mit folgendem Code eine txt Datei in Excel ab Zelle A3 (habe ich mit Google gefunden).
Mit einem weiterem Code (TextInSpalten) werden die Daten dann auf Spalten aufgeteilt, funktioniert soweit.
Code:
Sub ImportTXT()
  ' liest alle Zeilen aus einer Textdatei und schreibt Inhalt in Spalte A
Dim intFF As Integer
Dim iZeile As Integer
Dim strDatei As String


strDatei = Sheets("Anleitung").Range("A1").Value
intFF = FreeFile
iZeile = 3                                 ' Variable für Zeilennummer

    Open strDatei For Input As #intFF       ' Öffnet Textdatei zum Lesen
    Do While Not EOF(intFF)                 ' Schleife: Laufe bis zur letzten Zeile
    Line Input #intFF, strDatei             ' Zeile Lesen und zwischenspeichern
    Cells(iZeile, 1) = strDatei             ' Zwischenspeicher an Zelle übergeben
    iZeile = iZeile + 1                     ' Zeilennummer erhöhen
    Loop                                    ' zurück zum Schleifenbeginn
    Close #intFF                            ' schließt die Textdatei
    
    TextInSpalten
    
End Sub

Ich möchte noch zwei Sachen in den Code einbauen.
1. Aus der selben Textdatei sollen aus der 1. Zeile die Zeichen 86 bis 93 ( ist ein Datum TT.MM.JJ) in mein Excel Zelle C1 importiert werden.
2. Es sollen nicht wie im Code alle Zeilen sondern nur Zeilen, die nicht leer sind und nicht mit bestimmten Werten beginnen zB 12345 oder KON oder # importiert werden.
Zeilen die nicht importiert werden sollen könnten auch noch nach anderen Zeichenfolgen innerhalb der Zeile ermittelt werden.

Danke für Eure Hilfe.
LG Herbert
Windows 7
Excel 2010
to top
#2
Hallo Herbert,

den Import würde ich so lassen und das Andere in Excel erledigen.
Wenn Du die Ausschlüsse genau definierst, kann man Dir auch einen Code zeigen.
Gruß Atilla

Excel 2007
[-] Folgende(r) 1 Benutzer sagt Danke an atilla für diesen Beitrag:
herbert0803
to top
#3
Hallo Atilla,

das ist natürlich auch eine Möglichkeit.
Es sollen folgende Zeilen komplett gelöscht werden:
1. alle leeren Zeilen -> keine Inhalt in den Spalten A bis I
2. Alle Zeilen, bei denen in der Spalte A die Zeichen 1234/ oder #1234 oder KON vorhanden sind

Danke!
LG Herbert
Windows 7
Excel 2010
to top
#4
Hallo Herbert,

Kommen die Zeichen nur in einer Spalte vor oder können sie in unterschiedlichen Spalten auftauchen?

Eine Lösung, soweit kein anderer schon die Aufgabe gelöst hat, kann ich ab 20 Uhr anbieten.
Gruß Atilla

Excel 2007
to top
#5
Hallo Atilla,

Die Zeichen kommen eigentlich nur in A3 bis letzte verwendete Zeile in A vor.
Ich habe auch schon etwas mit Google gefunden, aber das funktioniert nicht ganz, es wird die Zeichenfolge, die mit einer Raute # beginnt nicht gefunden.
hier mal mein Code, mit dem suche ich jetzt anstelle der Zeichenfolge mit # nach einem anderen in Spalte B.
Code:
Sub Ueberschriften_loeschen()

endrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row

For i = endrow To 3 Step -1

    If Worksheets("RevLi").Cells(i, 1) Like "12345/??" Then
    Worksheets("RevLi").Cells(i, 1).EntireRow.Delete
          
    End If
    
Next i

For i = endrow To 3 Step -1

    If Worksheets("RevLi").Cells(i, 2) Like "G*" Then
    Worksheets("RevLi").Cells(i, 2).EntireRow.Delete
          
    End If
    
Next i

For i = endrow To 3 Step -1

    If Worksheets("RevLi").Cells(i, 1) Like "KONT*" Then
    Worksheets("RevLi").Cells(i, 1).EntireRow.Delete
          
    End If
    
Next i

End Sub
Funktioniert, aber vielleicht kann man das noch verkürzen und weißt du wie ich nach der Zeichenfolge mi #12345 suchen kann?

Was mir noch fehlt ist, dass ich aus dem importierten Zellinhalt in A3 die Zeichen 86 bis 93 in die zelle C3 kopieren möchte.
LG Herbert
Windows 7
Excel 2010
to top
#6
Hallo zusammen,

ich würde die Daten schon beim Import ausschließen. Wenn die leeren Zeilen wirklich leer sind und keine Leerzeichen enthalten und KON immer KON und nicht mal kon geht es so. Ansonsten kann man sich auch etwas mehr dazu einfallen lassen. Wenn Du ein bestimmtes Trennzeichen hast, kann man das in Excel noch weiter treiben sodass Du auch keinen Text in Spalten brauchst.
Code ist jetzt hier geschrieben und nicht getestet.

Code:
If Len(strDatei) > 0 Then
  If Left(strDatei,5) <> "12345" And Left(strDatei,3) <> "KON" And Left(strDatei,1) <> "#" Then
    Cells(iZeile, 1) = strDatei             ' Zwischenspeicher an Zelle übergeben
    iZeile = iZeile + 1                     ' Zeilennummer erhöhen
  End If
End If
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
herbert0803
to top
#7
Hallo zusammen,

da habe ich wohl zu viel rein interpretiert.
Wenn die besagten Zeichen immer am Zeilenanfang vorkommen, dann ist das sicher einfach beim Einlesen zu bewerkstelligen.
Herbert hatte ja geschrieben, dass sie auch mit Zeichen innerhalb der Zeile auch identifizierbar sind.
Das geht dann natürlich alles beim Einlesen.

Sorry Herbert, dass ich Dich hingehalten habe.
Gruß Atilla

Excel 2007
to top
#8
Hallo Atilla,
Deine Fragen haben geholfen, die Aufgabenstellung zu präzisieren und Dein Vorschlag ist doch auch gangbar, da was mit Text in Spalten zu machen. Da brauchst Du Dich nicht entschuldigen.
Ich habe auch nur eine Teillösung angeboten, bei mir fehlt dieser Teil mit Text in Spalten noch, gerade weil das in Excel auch ganz gut geht. Auf das Datum in C3 hab ich auch keine Rücksicht genommen.
Da könnten wir 20:00 Uhr dann Schichtwechsel machen ;-) Ich hab jetzt schon mal Pause (finde keinen Smiley für's Abendbrot)
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#9
Hallo Atilla, Hallo Andre!

Danke euch Beiden für eure Vorschläge.
Ich hätte mich für die Lösung von Atilla entschieden, weil ich dort schon ziemlich weit bin und das was ich habe funktioniert auch so wie ich es brauche.
Ich würde nur noch brauchen wie ich aus A3 die Zeichen 86 bis 93 in die zelle C3 kopieren kann.

Und kann mir jemand sagen, warum dieser Code nicht funktioniert. Es wird alles andere gelöscht nur nicht die Zeilen in denen # am Anfang steht. Ist # eine Art Platzhalter?
Code:
For i = endrow To 3 Step -1

    If Worksheets("Test").Cells(i, 1) Like "#*" Then
    Worksheets("Test").Cells(i, 1).EntireRow.Delete
          
    End If
    
Next i
LG Herbert
Windows 7
Excel 2010
to top
#10
(27.11.2014, 08:36)herbert0803 schrieb: Und kann mir jemand sagen, warum dieser Code nicht funktioniert. Es wird alles andere gelöscht nur nicht die Zeilen in denen # am Anfang steht. Ist # eine Art Platzhalter?

Hallo Herbert,

die Raute ist - ähnlich wie der Stern (*) - ein Sonderzeichen und wird wie ein Joker oder eine "Wildcard" interpretiert.

Als Workaround funktioniert aber das Suchen und Ersetzen der Raute durch andere Zeichen (im untenstehenden Beispiel wird die Raute durch 3 X ("XXX") ersetzt, erst dann wird nach "XXX" gesucht und gelöscht ...

Code:
Sub weg_damit_1()
    Dim endrow As Long
    Dim i As Long
    endrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
    For i = endrow To 3 Step -1
        Cells(i, 1).Replace What:="~#", Replacement:="XXX", LookAt:=xlPart
        If Worksheets("Test").Cells(i, 1) Like "XXX*" Then
            Worksheets("Test").Cells(i, 1).EntireRow.Delete

        End If

    Next i
End Sub

Die Tilde (~) im Codeteil "Replace What:="~#" führt dazu, dass die Raute NICHT als Sonderzeichen interpretiert wird.
Aus welchen Gründen auch immer funktioniert das Voranstellen der Tilde allerdings nicht in dem Codeteil, der das Löschen der Zeilen bewirkt 222722
[-] Folgende(r) 1 Benutzer sagt Danke an Kl@us-M. für diesen Beitrag:
herbert0803
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Excel VBA erweiterter Text import Simozerus 2 36 01.12.2016, 16:36
Letzter Beitrag: Gast 123
  Daten aus CSV Import aufbereiten für weitere Nutzung Fuchur112 4 122 19.11.2016, 20:46
Letzter Beitrag: Gast 123
  import aus selber Tabelle philosapiens 5 56 26.10.2016, 22:28
Letzter Beitrag: steve1da
  BESTIMMTE ZEILEN IN EINE ANDERE TABELLEN KOPIEREN Berndt 3 269 17.10.2016, 06:44
Letzter Beitrag: Berndt
  automatischer csv import in Excel Daror 2 140 10.08.2016, 19:08
Letzter Beitrag: schauan
  Daten Import fehlende Nullen? gerdfromgermany 5 412 23.05.2016, 17:33
Letzter Beitrag: schauan
  VBA Import Maske FelixWeb 1 272 14.05.2016, 04:43
Letzter Beitrag: schauan
  Komplexe Tabelle in Excel importieren oder eintippen für den Import zu Power Point tobi92-tobias 8 552 08.05.2016, 19:29
Letzter Beitrag: WillWissen
  JPG Import hat schlechte Qualität maine-coon 5 530 21.02.2016, 19:54
Letzter Beitrag: maine-coon
  bestimmte Zeilen schützen und von Sortierung ausnehmen helpless 26 2.366 28.01.2016, 14:23
Letzter Beitrag: helpless

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste