ascendia
Goto Top

Inhalt einer .txt (Zeilenweise) in Excel (Spaltenweise) importieren

Guten Tag liebe administrator.de - Gemeinde,

ich würde mich freuen, wenn Ihr mir bei folgendem Problem weiterhelfen könntet. Im Internet habe ich bisher nichts dazu finden können oder ich habe nicht explizit nach meinem Problem gesucht.

Da ich Systeme habe, welche nicht über das Netzwerk angebunden werden jedoch regelmäßig eine Datei auf diese kopiert werden muss,
gebe ich den Usern einen USB-Stick an die Hand, wo sie mit CPAU für diesen Kopiervorgang Admin-Rechte bekommen.

Damit ich auswerten kann ob die Datei beim letzten Mal erfolgreich kopiert wurde (ist dies nicht der Fall wird eine Error-Datei erzeugt) und der User überhaupt den ihm vorgeschriebenen Vorgang durchgeführt hat,
lasse ich das Batch-Skript auch gleich eine log.txt mit folgendem Inhalt erstellen.

ComputernameUhrzeitDatumggf. "Kopiervorgang letztes Mal fehlgeschlagen."

Da ein User für mehrere Systeme verantwortlich ist, füllt sich meine log.txt zeilenweise immer weiter.
Um nun eine bessere Auswertung sowie Übersicht erstellen zu können, habe ich die log.txt in Excel importiert.

Daten > Aus Text...

Das funktioniert soweit auch ganz gut, aber die Daten werden wie aus der log.txt eingefügt. Sprich Zeile für Zeile.

A
1 Computername
2 Uhrzeit
3 Datum
4 ggf. "Kopiervorgang letztes Mal fehlgeschlagen"

Ich würde mich aber freuen, wenn ich diesen Import Spalte für Spalte bis maximal 4 Werte, danach neue Zeile und dan wieder maximal 4 Werte hinbekommen würde und genau da ist der Knackpunkt.

A B C D
1 Computername Uhrzeit Datum Bemerkungen
2 Computer1 15:00 05.08.2015
3 Computer2 16:00 05.08.2015 Kopiervorgang letztes Mal fehlgeschlagen.

Ich wäre euch über jede Hilfe dankbar, die mir dabei helfen kann dieses Problem zu lösen.
Ich freue mich schon auf eure zahlreichen Denkanstöße

Gruß
Basti

Content-Key: 279296

Url: https://administrator.de/contentid/279296

Printed on: April 26, 2024 at 21:04 o'clock

Mitglied: 114757
Solution 114757 Aug 05, 2015 updated at 19:19:30 (UTC)
Goto Top
Moin Basti, Welcome to the Forum ...
Sub ImportReports()
    Dim rngCurrent As Range, arrContent as Variant
    'Dateipfad angeben  
    Const FILE = "C:\report.txt"  
    'Objekte  
    Set fso = CreateObject("Scripting.FileSystemObject")  
    'Textdatei in Zeilen-Array laden  
    arrContent = Split(fso.OpentextFile(FILE, 1).ReadAll(), vbNewLine)
    
    With ActiveSheet
        'Überschriften setzen (kann weg gelassen werden wenn sie manuell erstellt werden)  
        With .Range("A1:D1")  
            .Value = Array("Computername", "Uhrzeit", "Datum", "Bemerkungen")  
            .Font.Bold = True
        End With
        
        'Erste leere Anfangszelle ermitteln  
        Set rngCurrent = .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)  
        'Array der importierten Zeilen durchlaufen und in neue Zeilen schreiben  
        For i = 0 To UBound(arrContent) - 1 Step 4
            rngCurrent.Resize(1, 4).Value = Array(arrContent(i), arrContent(i + 1), arrContent(i + 2), arrContent(i + 3))
            Set rngCurrent = rngCurrent.Offset(1, 0)
        Next
        
        'Spaltenformate anpassen --------  
        'Spalte A und D als Text formatieren  
        .Range("A:A,D:D").NumberFormat = "@"  
        'Spalte B Uhrzeitformat  
        .Range("B:B").NumberFormat = "hh:mm"  
        'Spalte C Datumsformat  
        .Range("C:C").NumberFormat = "dd.MM.yyyy"  
        
        'Spaltenbreiten anpassen  
        .Range("A:D").EntireColumn.AutoFit  
    End With
    Set fso = Nothing
End Sub
Gruß jodel32
Member: ascendia
ascendia Aug 05, 2015 at 19:18:35 (UTC)
Goto Top
Huhu jodel32,

vielen vielen Dank du hast mir sehr geholfen.
Funktioniert so wie es soll.
Ich habe es noch ein bisschen optisch für mich angepasst.
Wie gesagt, vielen Dank. face-smile

Wünsche noch einen schönen Abend!

Gruß
Basti