Autor
|
Thema: TXT durchsuchen, Zeile ausgeben (342 / mal gelesen)
|
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3406 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 16. Feb. 2024 10:40 <-- editieren / zitieren --> Unities abgeben:
Servus, Ich will eine TXT nach eine Stichwort durchsuchen "4444" und die entsprechende Zeile ausgeben. Passendes Macro hab ich gefunden, das Problem ist die Zeile wird bei Beistrichen abgeschnitten. "Y:\Auftraggeber, Typ\4444 Projektbezeichnung" wird zu " Typ\4444 Projektbezeichnung" Es handelt sich um unsere Ordnerstruktur, die Beistriche lassen sich nicht ersetzen. https://www.herber.de/mailing/Textdatei_nach_Begriff_durchsuchen_und_Fundzeile_importieren.htm hat da wer eine Idee? Code: Sub TextImport() Dim iFile As Integer Dim sSearch As String, sTxt As String Dim sFile As String If Dir(sFile) = "" Then Beep MsgBox "Sie müssen zuerst eine Textdatei anlegen!" Exit Sub End If iFile = FreeFile sFile = Application.Path & "\texttest.txt" sSearch = "Hallo" Open sFile For Input As iFile Do Until EOF(1) Input #iFile, sTxt If InStr(sTxt, sSearch) Then Range("A1") = "Gefunden: " & sTxt Exit Do End If Loop Close iFile End Sub
------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark Bernd P. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2757 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2023 Plateia, Canalis Visual Basic
|
erstellt am: 16. Feb. 2024 12:03 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Hallo Bernd, Was mich am Code etwas irritiert: Theoretisch müßte die Sub jedesmal abbrechen, da sFile erst nach der DIR() Abfrage definiert wird und somit immer leer sein müßte. Aber gut, müßte man testen bzw. funktioniert auch so. Die Abfrage EOF(1) solltest du ändern zu EOF(iFile). Durch die Verwendung von FreeFile kann hier auch ein anderer Wert als 1 entstehen. Die Funktion verwendet Input #iFile, dabei dient das Kommazeichen als Begrenzer. Du möchtest aber Zeilenweise einlesen, somit brauchst Du: Line Input #iFile Damit sollte dann auch der richtige Wert ausgegeben werden. Nebenbei bemerkt: Der Range("A1") wird bei jeder Zeile überschrieben, hier sollte auch noch eine Änderung erfolgen. Auch die nachfolgende Zeile (Exit Do) verstehe ich nicht, denn dadurch wird beim ersten finden abgebrochen. Aber gut vielleicht ist das erwünscht und erklärt das Verwenden von nur "A1". Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3406 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 19. Feb. 2024 07:32 <-- editieren / zitieren --> Unities abgeben:
Super Danke, funktioniert.
Code: Sub TextImport() Dim iFile As Integer Dim sSearch As String, sTxt As String Dim sFile As String iFile = FreeFile sFile = "C:\@Office\AHK\Projekte.txt" sSearch = "658" Open sFile For Input As iFile Do Until EOF(iFile) Line Input #iFile, sTxt If InStr(sTxt, sSearch) Then Range("A1") = "" & sTxt & "\00_Dokumente Eingang" Exit Do End If Loop Close iFile End Sub
------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark Bernd P. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|