Registriert seit: 11.04.2014
Version(en): 365
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 10 Office 365
Registriert seit: 14.04.2014
Version(en): 2003, 2007
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
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• herbert0803
Registriert seit: 11.04.2014
Version(en): 365
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 10 Office 365
Registriert seit: 14.04.2014
Version(en): 2003, 2007
26.11.2014, 17:10
(Dieser Beitrag wurde zuletzt bearbeitet: 26.11.2014, 17:13 von atilla.)
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
Registriert seit: 11.04.2014
Version(en): 365
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 10 Office 365
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• herbert0803
Registriert seit: 14.04.2014
Version(en): 2003, 2007
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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-2019+365)
Registriert seit: 11.04.2014
Version(en): 365
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 10 Office 365
Registriert seit: 11.04.2014
Version(en): 2003/2007/2013 (bei Bedarf auch noch '97/2000/2010)
(27.11.2014, 09: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 :22  :22:
Überlegen macht überlegen Gruss aus dem schönen Hunsrück _______ Klaus-Martin _______
|