Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: TXT Dateien in eine Exeltabelle schreiben

  1. #1
    Registriert seit
    03.09.2006
    Ort
    bei Ulm
    Beiträge
    210
    Danke
    82
    Erhielt 8 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen. Bestimmt sitzt hier irgendwo ein Makrofachmann.

    Ich habe z.b 20 Txt Dateien.
    Inhalt 1 Zeile mit 6 Werten durch >Komma< getrennt.

    Diesen Dateiinhalt möchte ich in eine Exeltabelle einlesen.

    Also so in der Art:

    Öffne Datei_1.TXT
    Strg A
    Strg C

    Öffne Exeldatei
    Strg V

    Öffne Datei_2.TXT
    Strg A
    Strg C

    Öffne Exeldatei
    Strg V

    Hat da jemand ne Idee

    Gruß Guste, und ab heute wird es Frühling
    Zitieren Zitieren TXT Dateien in eine Exeltabelle schreiben  

  2. #2
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.138
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Was ist die Grundlage?
    Soll ein Makro in Excel laufen? Soll es ein VB-Script sein? Soll es eine Hochsprache sein?
    Ist ein SCADA-System im Hintergrund, über dass das angesteuert werden soll?
    In welche Zelle soll der kopierte Text rein? Soll immer in neues Excel-File geöffnet werden?
    Wie soll dieses benahmt werden beim Abspeichern?
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  3. #3
    Guste ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.09.2006
    Ort
    bei Ulm
    Beiträge
    210
    Danke
    82
    Erhielt 8 Danke für 8 Beiträge

    Standard

    Ja ein Makro in Exel ginge auch. Die TXT.Dateien werden auf einem Stick in einem Verzeichnis abgelegt.
    Und alle Dateiinhalte sollen in das selbe Exelfile. Soll ja nachher nur eine Tabelle mit 6 Spalten ergeben.
    Also bei 20 TXT.Dateien eine Exelltabelle mit 6 Spalten und 20 Zeilen

    Gruß Guste

  4. #4
    Kallemann Gast

    Standard

    Hallo Guste.

    Ich habe ein Excel-Makro geschrieben, das Deine beschriebenen Funktionen erfüllt. Die ganze Geschichte unterscheidet sich aber dahingehend, dass die Reihenfolge von der in Deiner Beschreibung abweicht. Das heißt: Es muss zuerst die Excel-Datei geöffnet werden, dann werden die Dateien eingelesen. Momentan ist in dem Code eine Konstante deklariert, die den Pfad zum Stick enthält.


    Bitte starte Excel und gehe dann (z.B. mit Alt+F11) in den VisualBasic-Editor.

    Klicke im Menü "Einfügen" auf "Modul", danach siehst Du im Projekt-Explorer das hinzugefügte Modul, das standardmäßig den Namen "Modul1" erhalten haben sollte, und es öffnet sich dessen Code-Fenster.

    Der folgende Code gehört in das Code-Fenster von Modul1:



    'Öffentliche Kostanten
    Public Const StickPath As String = "E:\"
    Public Const DefaultExt As String = ".txt"
    '******************************************************



    'Öffentliche Methoden
    Public Sub ReadTextFilesOnStick()

    'Lokale Variablen
    Dim FSO
    Dim Folder
    Dim Files
    Dim File
    Dim TextFileCount As Long
    Dim TextFileList() As String
    Dim LastRow As Long

    '*****************************************************
    On Error GoTo ErrHandler
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Folder = FSO.GetFolder(StickPath)
    Set Files = Folder.Files
    If Files.Count = 0 Then GoTo NoFilesFound
    For Each File In Files
    If Right(File.Name, 4) = DefaultExt Then
    TextFileCount = TextFileCount + 1
    ReDim Preserve TextFileList(0 To TextFileCount - 1)
    TextFileList(UBound(TextFileList())) = File.Name
    End If
    Next
    If TextFileCount = 0 Then GoTo NoFilesFound
    msgtext = "Es wurden " & CStr(TextFileCount) & " Dateien gefunden:" & vbCr
    For i = LBound(TextFileList()) To UBound(TextFileList())
    msgtext = msgtext & vbCr & TextFileList(i)
    Next
    msgtext = msgtext & vbCr & vbCr & "Dateien einlesen?"
    Answer = MsgBox(msgtext, vbYesNo + vbInformation)
    If Answer = vbYes Then
    LastRow = Tabelle1.Range("A" & Tabelle1.Rows.Count).Rows.End(xlUp).Row
    If LastRow = 1 Then
    If (IsEmpty(Tabelle1.Range("A1")) = False) Then LastRow = LastRow + 1
    Else
    LastRow = Tabelle1.Range("A" & Tabelle1.Rows.Count).Rows.End(xlUp).Row + 1
    End If
    For i = LBound(TextFileList()) To UBound(TextFileList())
    Call ReadTextFileContent(TextFileList(i), LastRow)
    LastRow = Tabelle1.Range("A" & Tabelle1.Rows.Count).Rows.End(xlUp).Row + 1
    Next
    End If

    ExitSub:
    Erase TextFileList()
    Exit Sub

    NoFilesFound:
    MsgBox "Es wurden keine Text-Dateien gefunden.", vbOKOnly + vbInformation
    GoTo ExitSub

    ErrHandler:
    MsgBox Err.Description, vbOKOnly + vbCritical, "Fehler " & Err.Number
    Resume ExitSub

    End Sub


    Public Sub ReadTextFileContent(ByVal FileName As String, ByVal Row As Long, Optional ByVal Delimeter As String = ",")

    'Lokale Variablen
    Dim TextFileLineCount As Long
    Dim TextFileLineContent() As String
    Dim RangeContent() As String
    '*****************************************************
    On Error GoTo ErrHandler
    txtfile = FreeFile
    Open StickPath & FileName For Input As #txtfile
    Do While Not EOF(txtfile)
    ReDim Preserve TextFileLineContent(0 To TextFileLineCount)
    Line Input #txtfile, TextFileLineContent(TextFileLineCount)
    TextFileLineCount = TextFileLineCount + 1
    Loop
    Close #txtfile
    For Line = LBound(TextFileLineContent()) To UBound(TextFileLineContent())
    RangeContent = Split(TextFileLineContent(Line), Delimeter, -1, vbTextCompare)
    For Column = 0 To UBound(RangeContent())
    Tabelle1.Cells(Row, Column + 1) = RangeContent(Column)
    Next Column
    Row = Row + 1
    Next Line

    ExitSub:
    Erase TextFileLineContent() 'Löscht das Datenfeld TextFileLineContent
    Erase RangeContent() 'Löscht das Datenfeld RangeContent
    Exit Sub

    ErrHandler:
    MsgBox Err.Description, vbOKOnly + vbCritical, "Fehler " & Err.Number
    Resume ExitSub

    End Sub



    Nach dem Einfügen des Codes muss die Konstante "StickPath" angepaßt werden. Bitte ändere den Pfad zu dem Laufwerk und dem entsprechenden Verzeichnis und eventuell Unterverzeichnissen. Bitte unbedingt am Ende der Zeichenfolge einen "\" einfügen.






    Doppelklicke bitte im Projekt-Explorer auf "DieseArbeitsmappe", damit sich das entsprechende Code-Fenster öffnet.
    Das nun folgende Code-Fragment gehört in das Code-Fenster von "DieseArbeitsmappe":



    Private Sub Workbook_Open()
    Call ReadTextFilesOnStick 'Aufruf der Prozedur "ReadTextFilesOnStick" im Modul1
    End Sub





    Klicke nun bitte im Menü "Debuggen" auf "Kompilieren von VBAProject". Wenn keine Fehler gemeldet werden, schließe bitte den VisualBasic-Editor, kehre zurück zu Excel und speichere un schließe die Datei.

    Wenn Du die Datei nun wieder öffnest, sollte Dir als erstes eine Meldung angezeigt werden. Wenn der Pfad existiert und der Stick Textdateien enthält, wird eine Meldung angezeigt, in der sämtliche, auf dem Stick enthaltenen *.txt angezeigt werden. Wenn Du die Meldung mit "Ja" bestätigst, werden die Dateien eingelesen.


    Vielleicht soweit erstmal. Kannst Du ja 'mal ausprobieren.

    VG Carsten

  5. #5
    Guste ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.09.2006
    Ort
    bei Ulm
    Beiträge
    210
    Danke
    82
    Erhielt 8 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke Carsten für das Exelmakro. Probier ich gleich aus.
    Ein Bekanner hat mir das Dosmakro gesendet. Das funzt auch

    for /f "delims=" %%i in ('findstr /m "P" k:\AST\Daten\*.*') do type "%%i" >> K:\AST\NEU\daten.txt

Ähnliche Themen

  1. String in eine .txt schreiben/öffnen
    Von Conroe im Forum Programmierstrategien
    Antworten: 8
    Letzter Beitrag: 05.12.2011, 17:21
  2. Bytes in ein .txt-File schreiben
    Von FinalMistery im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 25.11.2011, 08:26
  3. Anfängerfrag Dateien lesen/schreiben
    Von kunse im Forum CODESYS und IEC61131
    Antworten: 10
    Letzter Beitrag: 20.07.2011, 14:03
  4. aus Flexibel heraus eine TXT Datei ändern
    Von rostiger Nagel im Forum HMI
    Antworten: 17
    Letzter Beitrag: 23.01.2011, 14:55
  5. Antworten: 3
    Letzter Beitrag: 23.05.2005, 11:34

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •