ich würde gerne Daten aus einer Textdateieinlesen, deren Name sich ändern kann (hochlaufende Nummer).
Das ist jedoch nicht alles. Ich benötige NUR eine Ziffernfolge aus der Textdatei, die UNTERSCHIEDLICH LANG sein kann und IMMER 2 Zeichen vor dem ersten Doppelpunkt in der Datei endet. Der Anfang der Ziffernfolge ist dann immer 8 oder 9 Zeichen weiter links (vor der Zahl ist IMMER ein Leerzeichen!).
Wäre jemand so nett, und würde mir eine Funktion für diese Logik basteln?
Zitat:Wäre jemand so nett, und würde mir eine Funktion für diese Logik basteln?
yep, wenn du einen relevanten Tabellenausschnitt hochlädtst. Es reichen 5-10 Datensätze, gerne anonymisiert, aber vom Aufbau her absolut identisch mit deinem Original. Lies dazu bitte hier nach: http://www.clever-excel-forum.de/Thread-...einstellen
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
da soll eine Textdatei gelesen werden und keine Tabelle
Hier mal ein Ansatz - erst mal für eine Datei zum testen. Siehe Kommentare, schaue dann ins Direktfenster, ob die richtige Zahl ausgelesen wurde. Ich habe hier noch nicht die zwei Zeichen vor dem Doppelpunkt berücksichtigt.
Code:
Sub test() 'Variablendeklarationen 'Objekt Dim fso As Object, objtext As Object 'Variant Dim MeineZahl 'Scripting setzen Set fso = CreateObject("Scripting.FileSystemObject") 'Textobjekt setzen - Dateinamen anpassen! Set objtext = fso.OpenTextFile("I:\Test\MeinText.txt", 1) 'Datei komplett einlesen MeineZahl = objtext.ReadAll 'Zahl extrahieren. 'Innere Anweisung: Teil vor erstem Doppelpunkt extrahieren, 'Aeussere Anweisung: ersten Teil zerteilen MeineZahl = Split(Split(MeineZahl, ":")(0), " ") 'Bestandteil nach letztem Leerzeichen ausgeben Debug.Print MeineZahl(UBound(MeineZahl)) End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Danke für Eure Antworten. Leider kann ich mit dem Codebeispiel nicht so viel Anfangen. Ich weiß leider nicht wie man Makros erzeugt, geschweige denn sinnvoll anwendet.
Ich habe 2 Dateien angehangen. Ziel ist es, immer die erste Zahl in den Klammern automatisch in Excel einzulesen (in dem Beispiel wäre das die Zahl "4839"). Die Struktur der Textdatei ist IMMER gleich und in diesem Format. Lediglich der NAME der Textdatei kann sich ändern. Es wäre also von Vorteil, wenn man den Namen der Textdatei variabel eingeben könnte, und dann bei "klick auf einen Button" den Wert aus dieser Dateieinlesen könnte.
Mit ALT+F11 kommst Du in den Makroeditor. Dort hast Du auf der linken Seite einen Projektexplorer, der so etwa funktioniert wie der von Windows. Du klickst dann auf Deine "Datei" und fügst dort über Menü | Einfügen | Modul selbiges ein und kopierst dort den Code rein. Das Ergebnis sollte dann, wie bei mir, 4839 in G4 sein.
Code:
Sub test() 'Variablendeklarationen 'Objekt Dim fso As Object, objtext As Object 'Variant Dim MeineZahl 'Scripting setzen Set fso = CreateObject("Scripting.FileSystemObject") 'Textobjekt setzen - Dateinamen anpassen! Set objtext = fso.OpenTextFile("I:\Test\bla2.txt", 1) 'Datei komplett einlesen MeineZahl = objtext.ReadAll 'Zahl extrahieren. 'Innere Anweisung: Teil vor erstem Doppelpunkt+Klamme :) extrahieren, 'Aeussere Anweisung: ersten Teil nach Klammer "(" zerteilen MeineZahl = Split(Split(MeineZahl, "):")(0), "(") 'Bestandteil nach letztem Leerzeichen ausgeben Sheets("Tabelle1").Cells(4, 7) = MeineZahl(UBound(MeineZahl)) * 1 'Debug.Print MeineZahl(UBound(MeineZahl)) End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Im Anhang habe ich einen Screenshot angehangen. "Excel Ansicht" und die "Makro Ansicht" Wenn das Feld G4 leer ist, muss ich zuerst über ALT+F4 in den Makro Modus und dort auf "ausführen" -> "Sub/UserForm ausführen", damit sich die Zahl aktualisiert (bzw das Programm nochmal abläuft). Gibt es eine Möglichkeit, einen Link oder so zu erstellen, sodass ich in der Excel Ansicht den Wert aktualisieren kann, ohne in den "Makro Modus" zu wechseln?
ja, DU hast es im Bild schon richtig beschrieben - mit einem Button. Um da ranzukommen, müsstest Du das Menüband anpassen und die Entwicklertools aktivieren. Dort gibt es dann bei Menü | Einfügen Formularsteuerelemente oder AktiveX... Den Formularsteuerelementen kannst Du das Makro zuweisen, bei ActiveX kommt ein zusätzliches Makro - Wenn Du im Kontextmenü der Maus auf Code anzeigen gehst - und dort käme z.B. Call Test rein. Alternativ kannst Du auch irgend ein anderes Objekt nehmen, ein Bild oder ein Rechteck oder ..., und dem ein Makro zuweisen.
Übrigens - auf dem Bild fehlt am Anfang irgendwie ein S bei Sub ...
. \\\|/// 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 • simon1516