Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1528to1532
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen löschen (wieder mal)

Zeilen löschen (wieder mal)
30.11.2016 14:33:25
PaulB
Hallo
Es ist wieder mal soweit dass ich mich an ein Makro wage.
Leider läuft mein Versuch nicht ganz durch.
Es wäre toll wenn jemand mir einen kleinen Schubs geben könnte.
Ich habe folgendes Problem.
Periodisch muss in einer Log-Datei nach bestimmte Werte analisiert werden.
In der Log-Datei (.txt) ist allerdings zusätzlich eine Menge Datenmüll.
Ich möchte diesen Datenmüll löschen, damit die Nutzdaten sichtbar werden.
Ueber die Suchfunktion habe ich eine Menge ähnlicher Fälle gefunden.
So habe ich mich an die Arbeit gemacht und ein anderes (eigenes) Makro etwas umgeändert.
Einen Teil aus dem I-net geklaut und eingefügt.
Leider das Makro nicht durch.
Die Log-Datei soll in Excel importiert werden.
Gerne alles in eine Spalte A.
Dann sollen Zeilen welche mit z.b.: Dialing* beginnen oder in welchen irgendwo CALLED vorkommt behalten werden.
(Diesen Teil des Markros habe ich geklaut oder besser gesagt: übernommen und angepasst.)
Es wäre von Vorteil wenn der Name der Log_Datei - den Namen der Ausgagngsdatei (txt-Format) schon vorgeben würde.
( dies müsste bereits in dem Teil des eigenen Makros enthalten sein )
Das Makro bleibt stehen bei:
Dim SheetName = "Tabelle1" Es ist eigentlich égal wie die Seite heist.
Dim SearchColumn = "A" Das hiess in dem geklautenen Makro: SUchSpalte
Dim Searchtext =
Die Zeilen sind auch rot markiert und es erscheint ein "Compile error" - EXPECTED: END OF STATEMENT

Ob der/die/das Makro bis ansonsten zum Schluss durchlaufen würde hoffe ich.
Es wäre toll wenn jemand mir sagen könnte, wo der Hund begraben liegt:
Besten Dank.
  • 
    Sub delete()
    ' Created 30.11.2016.
    ' Keyboard Shortcut: Ctrl+f
    Dim varName As Variant
    Dim strName As String
    Dim Neuer_Dateiname As String
    Dim strTabname As String
    Dim loletzte As Long
    Dim strPfad As String
    'Pfad festlegen
    strPfad = "C:\delete\"
    'Laufwerk und Pfad zum Öffnen vorgeben
    ChDrive "C"
    ChDir strPfad
    'Datei-Öffnen-Dialog aufrufen
    varName = Application.GetOpenFilename("Text-Dateien (*.txt),*.txt")
    'Letztes \ ermitteln um Pfad und Dateiname zu trennen
    strName = Right$(varName, Len(varName) - InStrRev(varName, "\"))
    'Letzten . ermitteln um Dateiname und Erweiterung zu trennen
    strName = Left(strName, InStrRev(strName, ".") - 1)
    'import aus txt datei
    Workbooks.OpenText Filename:=varName, Origin:=xlMSDOS, StartRow _
    :=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
    , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
    TrailingMinusNumbers:=True
    Columns("A:A").ColumnWidth = 67.29
    'letzte Zeile in Spalte A im aktiven Blatt ermitteln
    loletzte = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    'Name des aktiven Arbeitsblattes in Variable schreiben
    strTabname = ActiveWorkbook.ActiveSheet.Name
    Dim SheetName = "Tabelle1"
    Dim SearchColumn = "A"
    Dim Searchtext = "*NETM*, Dialing*, REDIRECTED*, CALLING*, *CALLED*"
    
    
    Sub DeleteLine()
    Dim Text As Variant, Found As Boolean, i As Long, EndLine As Long, s As Integer
    Sheets(SheetNamen).Activate
    EndLine = Cells(Rows.Count, SuchSpalte).End(xlUp).Row
    Text = Split(Searchtext, ",")
    Application.ScreenUpdating = False
    For i = 1 To EndLine
    If i > EndLine Then Exit For
    Found = False
    For s = 0 To UBound(Text)
    If Cells(i, SearchColumn) Like Trim(Text(s)) Then Found = True:  Exit For
    Next
    If Found = False Then Rows(i).Delete:  i = i - 1:  EndLine = EndLine - 1
    Next
    Application.ScreenUpdating = True
    'Speichern-unter Dialog aufrufen
    Neuer_Dateiname = Application.GetSaveAsFilename(InitialFileName:=strPfad & strName & ".txt",  _
    fileFilter:="Excel-Arbeitsmappe, *.txt")
    'falls Abbrechen gedrückt wird, Makro verlassen
    If Neuer_Dateiname = "Falsch" Then
    'Meldung Makroabbruch
    MsgBox "Workbook not saved!", 48, "Abort by user"
    Exit Sub
    Else
    'aktive Arbeitsmappe speichern
    ActiveWorkbook.SaveAs Filename:=Neuer_Dateiname, FileFormat:=51
    End If
    End Sub
    

  • 2
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Zeilen löschen (wieder mal)
    30.11.2016 15:10:43
    Rudi
    Hallo,
    das ist ja auch Blödsinn.
    Schema:
    Dim SheetName As String
    SheetName="Tabelle1"
    Alternativ als Konstante (ohne vorheriges Dim):
    Const SheetName As String = "Tabelle1"
    Gruß
    Rudi
    AW: Zeilen löschen (wieder mal)
    05.12.2016 17:31:17
    PaulB
    Hallo
    Mein Makro sollte ja einiges an Datenmüll löschen.
    Respekive es löscht alles ausser den Zeilen welche ich behalten will.
    Soweit OK. Es läuft auch mittlerweilen durch.
    Allerdings sind jetzt alle Ereignisse der Log-file Zeile an Zeile zusammengerückt.
    Soweit auch logisch.
    Deshalb wollte ich eine weitere Zeile in welcher der Begriff *NetM* vorkommt -stehenlassen
    damit ich in einem zweiten Schritt alle Zeilen mit dem Begriff *NetM* wieder suchen kann
    um dann lediglich dessen Inhalt zu löschen.
    Somit hätte ich auch eine Leerzeile zwischen den ereignissen.
    Das funktioniert auch, allerding nie bis ganz zum Schluss der Kolonne A.
    Bei den letzten Ereignissen bleibt jeweils die Zeile mit NetM stehen.
    Ich habe mit verschiedenen Log-files von unterschiedlichen Länge probiert.
    hier nochmal das aktuelle Makro
  • 
    Sub listing()
    ' Keyboard Shortcut: Ctrl+f
    Dim varName As Variant
    Dim strName As String
    Dim Neuer_Dateiname As String
    Dim strTabname As String
    Dim loletzte As Long
    Dim strPfad As String
    'Pfad festlegen
    'strPfad = "C:\Listing\"
    'Laufwerk und Pfad zum Öffnen vorgeben
    'ChDrive "C"
    'ChDir strPfad
    'Datei-Öffnen-Dialog aufrufen
    varName = Application.GetOpenFilename("Text-Dateien (*.txt),*.txt")
    'Letztes \ ermitteln um Pfad und Dateiname zu trennen
    strName = Right$(varName, Len(varName) - InStrRev(varName, "\"))
    'Letzten . ermitteln um Dateiname und Erweiterung zu trennen
    strName = Left(strName, InStrRev(strName, ".") - 1)
    'import aus txt datei
    Workbooks.OpenText Filename:=varName, Origin:=xlMSDOS, StartRow _
    :=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
    , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
    TrailingMinusNumbers:=True
    Columns("A:A").ColumnWidth = 75
    'letzte Zeile in Spalte A im aktiven Blatt ermitteln
    loletzte = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    'Name des aktiven Arbeitsblattes in Variable schreiben
    strTabname = ActiveWorkbook.ActiveSheet.Name
    'DeleteLine()
    Const SearchColumn = "A"
    Const Searchtext = "*NetM*, Dialing*, REDIRECTED*, CALLING*, *CALLED*"
    Dim Text As Variant, Found As Boolean, i As Long, EndLine As Long, s As Integer
    EndLine = Cells(Rows.Count, SearchColumn).End(xlUp).Row
    Text = Split(Searchtext, ",")
    Application.ScreenUpdating = False
    For i = 1 To EndLine
    If i > EndLine Then Exit For
    Found = False
    For s = 0 To UBound(Text)
    If Cells(i, SearchColumn) Like Trim(Text(s)) Then Found = True:  Exit For
    Next
    If Found = False Then Rows(i).Delete:  i = i - 1:  EndLine = EndLine - 1
    Next
    Application.ScreenUpdating = True
    'delete Zeileninhalt
    Const Searchtexxt = "*NetM*"
    EndLine = Cells(Rows.Count, SearchColumn).End(xlUp).Row
    Texxt = Split(Searchtexxt, ",")
    Application.ScreenUpdating = False
    For i = 1 To EndLine
    If i > EndLine Then Exit For
    Found = False
    For s = 0 To UBound(Texxt)
    If Cells(i, SearchColumn) Like Trim(Texxt(s)) Then Found = True:  Exit For
    Next
    If Found = True Then Rows(i).ClearContents:  i = i - 1:  EndLine = EndLine - 1
    Next
    Application.ScreenUpdating = True
    'Speichern-unter Dialog aufrufen
    Neuer_Dateiname = Application.GetSaveAsFilename(InitialFileName:=strPfad & strName & ".txt",  _
    fileFilter:="Excel-Arbeitsmappe, *.txt")
    'falls Abbrechen gedrückt wird, Makro verlassen
    If Neuer_Dateiname = "Falsch" Then
    'Meldung Makroabbruch
    MsgBox "Workbook not saved!", 48, "Abort by user"
    Exit Sub
    Else
    'aktive Arbeitsmappe speichern
    ActiveWorkbook.SaveAs Filename:=Neuer_Dateiname
    'FileFormat:=51
    End If
    End Sub
    

  • Vielen Dank für eventuelle Hilfe
    mfg
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige