vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
VBA Log auswerten 
Autor: bool
Datum: 30.08.07 10:01

Hallo ihr lieben,

folgendes:

Ich habe eine Logdatei, die ich mit Hilfe von Word Makros bearbeiten möchte. Es sollen

1. alle leeren Zeilen gelöscht werden

2. nach einem bestimmten Wort immer die 6 darauffolgenden Zeilen gelöscht werden.

3. bei einer Zeile mit einem bestimmten Wort drüber und drunter eine Leerzeile angelegt werden.


Ich muss dazu sagen dass heute der erste Tag ist wo ich mich mit VB auseinander setze. Hab auch schon recht viel gegooglt, und mir irgendwie einen halbwegs passenden Quelltext zamgebastelt, doch leider funktioniert er noch nicht ganz.
Beim Komplieren makiert er 2 Zeilen und schreibt "Benutzerdefinierter Typ nicht definiert". Wie kann ich diesen benutzerdefinierten Typ definieren? ;)


Option Explicit
Sub Start()
    Dim Zeilen As Collection
    Dim Dateiname As String
    'Dateinamen organisieren
    Dateiname = ErfrageDateinamen
    'Prüfen ob es einen Namen gibt
    If Dateiname = "" Then
        Exit Sub
    End If
    'Eine Kollektion der Zeilen holen
    Set Zeilen = LeseDateiUni(Dateiname)
    'geänderten Inhalt in Datei speichern
    SchreibeDatei Dateiname, Zeilen
    MsgBox "Fertig!!!", vbInformation
End Sub
Function ErfrageDateinamen() As String
    'Mit Datei-Öffnen-Dialog anzeigen
    With Application.FileDialog(msoFileDialogOpen)
        '...anzeigen
        If .Show Then
            'Ausgewählte Datei ermitteln und zurückgeben
            ErfrageDateinamen = .SelectedItems(1)
        End If
    End With
End Function
Function LeseDateiUni(Name As String) As Collection _
  '<----------------------------------- hier
    'Zugriff auf Dateinsystem mit Unicode
    Dim fso As New FileSystemObject ' 
    ' <----------------------------------------------------------hier
    Dim Text As Scripting.TextStream
    Dim Zeilen As New Collection
    Dim Zeile As String
    Dim i As Integer
    Set Text = fso.OpenTextFile(Name, , , TristateMixed)
    Do Until Text.AtEndOfStream
        'Hier gehts los
        Zeile = Text.ReadLine()
        If (Len(Trim(Zeile)) > 0) And Not (InStr(Zeile, _
          "Zeilediegelöschtwerden soll") > 0) Then
            ' Nächsten 6 zeilen überspringen
            If InStr(Zeile, "TEXT JOB") > 0 Then
                Zeile = Zeile & vbCrLf
                For i = 0 To 5
                    Text.SkipLine
                Next
            ' Eine Leerzeile davor und dannach einfügen
            ElseIf InStr(Zeile, "LIST OF PATCHES") > 0 Then
                Zeile = vbCrLf & Zeile & vbCrLf & vbCrLf
            ' Usw.
            Else
                Zeile = Zeile & vbCrLf
            End If
        End If
        Zeilen.Add Zeile
    Loop
    Text.Close
    Set LeseDateiUni = Zeilen
End Function
Function LeseDatei(Name As String) As Collection
    Dim Dateinummer As Integer
    Dim Temp As String
    'ein Objekt vom Typ Collection erzeugen
    Dim Zeilen As New Collection
    'Jede Zeile ist ein Objekt
    Dim Zeile As KlasseZeile
    'Dateinummer ermitteln
    Dateinummer = FreeFile
    'Datei zum Lesen öffnen
    Open Name For Input As Dateinummer
    Do Until EOF(Dateinummer)
        'eine Zeile lesen
        Line Input #Dateinummer, Temp
        'Zeile als Objekt erzeugen
        Set Zeile = New KlasseZeile
        'Text der Zeile zuweisen
        Zeile.Text = Temp
        'Zeile in die Collection aufnehmen
        Zeilen.Add Zeile
    Loop
 
    'Inhalt zurückgeben
    Set LeseDatei = Zeilen
    Close Dateinummer
End Function
Sub SchreibeDatei(ByVal Dateiname As String, Zeilen As Collection)
    Dim Zeile As TextStream
 
    Dim Dateinummer As Integer
    'Dateinamen für Ausgabe verändern
    Dateiname = ZielDateiname(Dateiname)
    'Freie Dateinummer ermitteln
    Dateinummer = FreeFile
    'Öffnen der Datei zum Schreiben
    Open Dateiname For Output As Dateinummer
    'in einer Schleife durch alle Zeilen
    For Each Zeile In Zeilen 
        'Prüfen, ob Zeile geschrieben werden muss
       If Len(Zeile) > 0 Then
       Print #Dateinummer, Zeile
End If
    Next
    Close Dateinummer
End Sub
Function ZielDateiname(Name As String) As String
    'Dateiname um ".modi" erweitern
    ZielDateiname = Name & ".modi"
 
 
End Function
Danke schonmal!
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
VBA Log auswerten1.084bool30.08.07 10:01
Re: VBA Log auswerten615mitsch30.08.07 10:33
Re: VBA Log auswerten610bool30.08.07 10:44
Re: VBA Log auswerten598mitsch30.08.07 11:11
Re: VBA Log auswerten602bool30.08.07 11:40
Re: VBA Log auswerten597mitsch30.08.07 15:22

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel