Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  VBasic / vb.net / vbs / wsh
  TXT durchsuchen, Zeile ausgeben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  TXT durchsuchen, Zeile ausgeben (341 / mal gelesen)
Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



Sehen Sie sich das Profil von Bernd P an!   Senden Sie eine Private Message an Bernd P  Schreiben Sie einen Gästebucheintrag für Bernd P

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bernd P 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Bernd P an!   Senden Sie eine Private Message an Bernd P  Schreiben Sie einen Gästebucheintrag für Bernd P

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz