Excel-VBA Text suchen kopieren anpassen
Hallo, ich möchte gerne aus einem Logfile alle Einträge mit :Record in Tabelle2 kopieren.
Bisher habe ich folgende VBA-Codes im Internet gefunden und auf meine Bedürfnisse angepasst.
Modul1
Modul2
Bisher funktioniert es soweit, nur mit "*Record*" kopiert es zuviel (siehe unten), wenn ich den * vor Record entferne geht es nicht mehr.
Eigentlich benötige ich in Tabelle2 nur die in Daten aus den Hochkommas.
2021.10.30 07:47:17.163 ALWAYS : :Record '020202930202121222020202020202020' Beispieltext
2021.10.30 21:18:50.501 ALWAYS : :Record '102912392348194042929329329392192' Beispieltext
2021.10.30 21:18:50.501 ALWAYS : :Record 'X392jdXeuAhdd38293293293812818281' Beispieltext
Es kann auch ein zusätzlicher VBA-Code sein, der mir aus Tabelle2 die ganzen Record's in Tabelle3 kopiert.
Was auch schön wäre, wenn doppelte Records in Tabelle2 farblich markiert werden und die nicht doppelten
in Tabelle3 ab A1 nach unten stehen.
supertux
Bisher habe ich folgende VBA-Codes im Internet gefunden und auf meine Bedürfnisse angepasst.
Modul1
Public Sub DateiImport()
Worksheets("Tabelle1").Range("A1:A6000").ClearContents
Selection.ClearContents
Dim varPath As Variant
varPath = Application.GetOpenFilename("Text Files (*.*), *.*")
If varPath = False Then Exit Sub
Call Workbooks.OpenText(Filename:=varPath, _
Origin:=xlWindows, _
StartRow:=1, _
DataType:=xlDelimited, _
Tab:=True, _
DecimalSeparator:=".", _
ThousandsSeparator:=",")
With ActiveWorkbook
.Worksheets(1).UsedRange.Copy Destination:=Tabelle1.Cells(1)
.Close SaveChanges:=False
End With
End Sub
Modul2
Option Explicit
Sub SuchenKopieren()
Dim RngZ As Range, x As Long
x = 0
Worksheets("Tabelle2").Range("A1:A6000").ClearContents
For Each RngZ In Worksheets("Tabelle1").Range("A1:A6000")
If RngZ Like "*Record*" Then x = x + 1: Worksheets("Tabelle2").Cells(x, 1) = RngZ
Next
End Sub
Bisher funktioniert es soweit, nur mit "*Record*" kopiert es zuviel (siehe unten), wenn ich den * vor Record entferne geht es nicht mehr.
Eigentlich benötige ich in Tabelle2 nur die in Daten aus den Hochkommas.
2021.10.30 07:47:17.163 ALWAYS : :Record '020202930202121222020202020202020' Beispieltext
2021.10.30 21:18:50.501 ALWAYS : :Record '102912392348194042929329329392192' Beispieltext
2021.10.30 21:18:50.501 ALWAYS : :Record 'X392jdXeuAhdd38293293293812818281' Beispieltext
Es kann auch ein zusätzlicher VBA-Code sein, der mir aus Tabelle2 die ganzen Record's in Tabelle3 kopiert.
Was auch schön wäre, wenn doppelte Records in Tabelle2 farblich markiert werden und die nicht doppelten
in Tabelle3 ab A1 nach unten stehen.
supertux
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1457149409
Url: https://administrator.de/contentid/1457149409
Ausgedruckt am: 25.11.2024 um 10:11 Uhr
11 Kommentare
Neuester Kommentar
im Internet gefunden und auf meine Bedürfnisse angepasst.
Dann copy & paste mal weiter .Sub Import()
Set fso = CreateObject("Scripting.FileSystemObject")
Set regex = CreateObject("vbscript.regexp")
regex.Global = True: regex.IgnoreCase = True
regex.Pattern = ":Record\s*'([^']+)'"
varPath = Application.GetOpenFilename("Text Files (*.*), *.*")
If varPath = False Then Exit Sub
With Sheets("Tabelle2")
.Range("A:A").NumberFormat = "@"
Set matches = regex.Execute(fso.OpenTextFile(varPath, 1,False,-2).ReadAll())
If matches.Count > 0 Then
For Each m In matches
.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = m.submatches(0)
Next
End If
.Range("A:A").RemoveDuplicates Columns:=1, Header:=xlYes
End With
End Sub
Zitat von @supertux:
Bei mir öffnet sich hier nur das Dialogfeld zum auswählen der Datei.
Mehr passiert nicht
Bei mir öffnet sich hier nur das Dialogfeld zum auswählen der Datei.
Mehr passiert nicht
Passiert alles direkt in Tabelle2 ohne Umwege über Tabelle1 . Habs hier erfolgreich mit den Test-Daten getestet die du hier ja leider ohne Codetags bereitgestellt hast daher gehen Tabs etc. verloren, habe den regex diesbezüglich noch etwas "fine getuned" ...
Ergebnis in Tabelle2
Klar dafür war's gedacht.
Das funktioniert, aber die doppelten Einträge sind noch vorhanden.
Das kannst du ja leicht über die Toolbar nachholen oder via Code ... habe ich oben noch in Zeile 16 ergänztZitat von @supertux:
Habe es nochmal getestet, mit dem Original-Logfile funktioniert es nicht.
Nur wenn ich die Daten wie oben im Code-Tag als Text-Dokument speicher, kann ich diese importieren
und halte die Ergenisse im Hochkomma. Aber eben nicht mit dem Original-Logfile.
Habe es nochmal getestet, mit dem Original-Logfile funktioniert es nicht.
Nur wenn ich die Daten wie oben im Code-Tag als Text-Dokument speicher, kann ich diese importieren
und halte die Ergenisse im Hochkomma. Aber eben nicht mit dem Original-Logfile.
Dann checke die Kodierung des Logfiles und passe diese bei OpenTextfile an. habs mal auf ANSI eingestellt, war ASCII.
https://docs.microsoft.com/de-de/office/vba/language/reference/user-inte ...
Na dann war's n Unicode File.
👍 Fehlt dann nur noch der Haken am Thread.