Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Spalten aus mehreren ASCII-Dateien automatisiert importieren
Gehe zu Seite 1, 2  Weiter
zurück: on click cell to form weiter: summe berechnen zwischen leeren Zellen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
MoTSCHIGGE
Gast


Verfasst am:
16. Jun 2010, 16:44
Rufname:

Spalten aus mehreren ASCII-Dateien automatisiert importieren - Spalten aus mehreren ASCII-Dateien automatisiert importieren

Nach oben
       Version: Office 2007

Hallo,

ich habe bereits im Internet nach einer Lösung zu meinem Problem gesucht, aber leider keine passende Lösung finden können. Da ich mich mit Makros in Excel leider wenig auskenne, hoffe ich hier auf Unterstützung.
Folgendes Problem:

Ich habe ca. 250 ASCII-Dateien (Dateiendung *.dat), die alle in etwa folgendes Format haben:

[code]
**Header1 Sampling Parameters**
TraceFile C:\XYZ\XYZ\075b_NIR_fe.dat
## WEITERE 101 zum Header gehörige Zeilen
**HeaderEnd**
380 3.59324
380.2 3.583061
380.4 3.572884
380.6 3.562705
380.8 3.552528
381 3.544456
381.2 3.551845
381.4 3.559233
381.6 3.566622
381.8 3.57401
###...
1099.8 12.30338
[\code]

Der Header ist dabei immer 104 Zeilen lang, ab Zeile 105 beginnen die zwei numerischen Spalten, die generell durch einen Tabulator voneinander getrennt sind.
Zusätzlich habe ich ca. 250 weitere ASCII-Dateien, mit ähnlichem Header, bei denen allerdings in der ersten numerischen Spalte der Wertebereich 909-1702 (anstatt 380-1099.8) abgedeckt wird. Prinzipiell gehören allerdings die ersten 250 Dateien inhaltlich zu den anderen 250 Dateien - sie unterscheiden sich nur durch den Wertebereich.

Interessant sind für mich nun in jeder dieser 500 Dateien immer nur der Dateiname (in Zeile 2 enthalten; Dateipfad wechselt) sowie die beiden numerischen Spalten, die unter dem Header folgen.
Mein Ziel besteht in einer Excel-Arbeitsmappe, die in der ersten Spalte die beiden immer gleichbleibenden Wertebereiche der jeweils 250 ASCII-Dateien enthält (also 380-1099.8 und 909-1702) und in allen weiteren Spalten die Zahlenwerte, die aus der jeweils 2. Spalte jeder ASCII-Datei (unterm Header) stammen. Bei diesen Spalten soll außerdem in der ersten Zeile der Name der Herkunfts-ASCII-Datei stehen - und zwar nur der Wert vor dem ersten Unterstrich (bei obigem Beispiel also "075b").
Zur Veranschaulichung hier noch ein Screenshot - so wie ichs mir vorgestellt habe:



Die Überschneidung der Wertebereiche ist zunächst einmal völlig nebensächlich. Da ich aber zwecks Aufwand nicht bei jeder Datei einzeln die o.g. 2. Spalte manuell importieren will, suche ich nach einem geeignetem Makro, das mir die Arbeit dabei erleichtert.
Sollten sich nicht beide Wertebereiche zugleich (untereinander) in eine Arbeitsmappe importieren lassen, könnte ich das ganze immernoch einzeln machen und hinterher zusammenfügen.
Vielleicht hat jemand eine Idee, wie sich das ganze unter Office 2007 realisieren lässt.

Grüße
MoTSCHIGGE
Gast


Verfasst am:
19. Jun 2010, 13:57
Rufname:


AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

Hat keiner eine Idee?
Gast



Verfasst am:
20. Jun 2010, 09:53
Rufname:

AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

Kann man davon ausgehen, dass die Werte in der ersten Spalte (und somit auch die Anzahl) in jedem der jeweils 250 Files gleich sind?

Es wäre sehr hilfreich wenn du so eine Datendatei hochladen könntest, sonst programmiert man zu sehr ins Blaue...
MoTSCHIGGE
Gast


Verfasst am:
20. Jun 2010, 13:44
Rufname:

AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

Ja die erste Spalte besteht in den ersten 250 Files immer aus 3600Zeilen mit demselben Inhalt in jeder Datei. In den restlichen 250 Files hat die erste Spalte (wie auch die 2.) 794 Zeilen. Auch hier ist der Inhalt der ersten Spalte immer gleich.
Die ersten 250 Files beinhalten Messwerte im sichtbaren Wellenlängenbereich "VIS" und im nahen Infrarot, die restlichen im nahen und mittleren Infrarot "NIR".

Ich habe mal die Messwert-Dateien einer einzigen Messung hochgeladen:
http://rapidshare.com/files/400980154/70b.rar.html
Sie besteht aus 2 VIS-Files (zu den ersten 250 Files gehörig) und 2 NIR-Files (zu den zweiten 250 Files gehörig).
Gast



Verfasst am:
20. Jun 2010, 15:51
Rufname:


AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

Bei diesen Spalten soll außerdem in der ersten Zeile der Name der Herkunfts-ASCII-Datei stehen - und zwar nur der Wert vor dem ersten Unterstrich (bei obigem Beispiel also "075b").

In deinem hochgeladen Archiv gibt es zu jedem Wellenlängenbereich allerdings jeweils zwei Dateien, die vor dem Unterstrich die gleiche Bezeichung haben. (z.B. 070b_NIR_fe und 070b_NIR_tr) Das gibt Konflikte in den Spaltenüberschriften. Wie soll das gelöst werden?

Ich gehe im übrigen davon aus, dass sich alle Dateien im gleichen Verzeichnis befinden.

Gruß
Ben
Gast



Verfasst am:
20. Jun 2010, 16:18
Rufname:

AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

Richtig - das habe ich vergessen zu schreiben. Bin bisher davon ausgegangen, dass 2 getrennte Tabellen für trocken ("tr") und feucht ("fe") erstellt werden müssen. Dann würde ich die Eingabedateien einfach vorher filtern. Man könnte das Problem allerdings auch durch den Zusatz "070_tr" bzw "070_fe" lösen. Mittlerweile erscheint mir die 2. Variante sinnvoller.
Die Files liegen alle im selben Verzeichnis.
Gast



Verfasst am:
20. Jun 2010, 16:34
Rufname:

AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

Gut, Danke für die Info. Dann nehme ich die zweite Variant mit Zusatz.
Allerdings bin ich gerade auf das Problem gestoßen, dass die Zeilen nur durch LF getrennt sind, statt durch CR-LF. (Unix-System?) Da muss ich erstmal sehen wie ich das Einlesen unter Windows überhaupt hinbekomme.

Gruß
Ben
Gast



Verfasst am:
20. Jun 2010, 18:37
Rufname:

AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

So, das Problem mir dem UNIX-LF ist gelöst, aber bevor ich das fertigstelle, noch eine Frage:
Habe alle Dateinamen die gleiche Struktur ***_VIS_***.dat und ***_NIR_***.dat ?

Gruß
Ben
Gast



Verfasst am:
20. Jun 2010, 19:58
Rufname:

AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

Ja jede Messung beinhaltet 4 Files:
XX_VIS_tr
XX_NIR_tr
XX_VIS_fe
XX_NIR_fe
Jeweils 250 Files für VIS und NIR.

Grüße
MoTSCHIGGE
Gast


Verfasst am:
20. Jun 2010, 20:00
Rufname:

AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

Es gibt allerdings einige wenige Ausnahmen in der Dateibezeichnung:
Manche Messungen haben 2 Nummern. Die sind dann folgendermaßen benannt:

145_146_VIS_tr

Grüße
Gast



Verfasst am:
20. Jun 2010, 20:16
Rufname:

AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

Ah. Dann muss ich das noch ein wenig abändern, da ich die Namen an den Unterstrichen aufspalte.

Gruß
Ben
BenX
VBA-Lehrling


Verfasst am:
20. Jun 2010, 20:46
Rufname: Ben

AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

OK, dann teste das mal (in einem allgemeinen Modul):

Code:
Const sDatDir As String = "C:\Spektrometer-Messungen\"

Sub ImportData()
    Dim sFileName As String, iPos As Integer, sPart1 As String, sPart2 As String
    Dim wsDst As Worksheet, lCol As Long, lNextRow As Long
   
    Set wsDst = ThisWorkbook.ActiveSheet    ' Zieltabelle = Gerade aktive Tabelle
   'Set wsDst = ThisWorkbook.WorkSheets("Zieltabelle") 'oder eine konkrete Angabe der Zieltabelle

    sFileName = Dir(sDatDir & "*.dat")
    If sFileName = "" Then
        MsgBox "Keine Datenfiles gefunden in" & vbCrLf & sDatDir
        Exit Sub
    End If
   
    lCol = 2
    Do While sFileName <> ""    ' Schleife über alle Datendateien
        ' VIS und NIR Dateien paarweisweise zusammen bearbeiten und in eine Spalte schreiben:
        iPos = InStr(LCase(sFileName), "_vis_") ' Suche nach _VIS_ im Dateinamen
        If iPos > 0 Then  ' VIS Datei ?
            ' Namen aufspalten:
            sPart1 = Left(sFileName, iPos - 1)
            sPart2 = Mid(sFileName, iPos + 5)
            ' Verkürzter Dateiname in erste Zeile schreiben:
            wsDst.Cells(1, lCol) = sPart1 & "_" & Split(sPart2, ".")(0)
            ' Einlesen der VIS Datei:
            lNextRow = ReadDataFile(sDatDir & sPart1 & "_VIS_" & sPart2, wsDst, lCol, 2)
            ' Einlesen der dazugehörigen NIR Datei:
            Call ReadDataFile(sDatDir & sPart1 & "_NIR_" & sPart2, wsDst, lCol, lNextRow + 1)
             lCol = lCol + 1 ' Nächste Spalte
        End If
        sFileName = Dir()   ' nächste Datei im Verzeichnis
    Loop
End Sub

'******************************

Function ReadDataFile(sFileName As String, wsDst As Worksheet, lColumn As Long, lRow As Long) As Long
    Dim sUnixFile As String, sLines As Variant, sItem As Variant
    Dim lIndex As Long, isData As Boolean
   
    Open sFileName For Binary As #1
        sUnixFile = Input(FileLen(sFileName), #1)   ' Gesamte Datei auf einmal einlesen
    Close #1
    sLines = Split(sUnixFile, Chr(10))              ' Zeilen an LF (Unix-Format!) splitten
       
    isData = False
    For lIndex = 0 To UBound(sLines)                ' Schleife über alle Zeilen
        If isData And Len(sLines(lIndex)) > 0 Then  ' Im Datenbereich?
            sItem = Split(sLines(lIndex), Chr(9))   ' An TAB splitten
            If UBound(sItem) < 1 Then               ' Weniger als zwei Spalten?
                wsDst.Cells(lRow, lColumn) = -1     ' -> Fehler
            Else
                If lColumn = 2 Then ' Werte in Spalte A nur einmal schreiben:
                    wsDst.Cells(lRow, 1) = Val(sItem(0))
                Else
                    ' Haben alle Dateien die gleichen Daten in Spalte 1 ?
                    If wsDst.Cells(lRow, 1).Value <> Val(sItem(0)) Then
                        MsgBox "Inkonsistentes Datenformat!"
                        Exit For
                    End If
                End If
                ' Messwerte in fortlaufende Spalte:
                wsDst.Cells(lRow, lColumn) = Val(sItem(1))
            End If
            lRow = lRow + 1
        Else
            If InStr(LCase(sLines(lIndex)), "**headerend**") > 0 Then isData = True
            ' Ende des Headers, Datenbereich beginnt
        End If
    Next lIndex
   
ReadDataFile = lRow ' Nächste freie Zeile
End Function

_________________
Gruß Ben
MoTSCHIGGE
Gast


Verfasst am:
21. Jun 2010, 15:50
Rufname:

AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

Hervorragende Arbeit! Tut genau was es soll. Das spart mir jede Menge Zeit.
Vielen herzlichen Dank für deine Mühe!!

Sollte ich noch was brauchen melde ich mich nochmal.

Gast



Verfasst am:
21. Jun 2010, 16:04
Rufname:

AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

Sehr schön, freut mich!
Und Danke für die Rückmeldung.

Gruß
Ben
Gast



Verfasst am:
21. Jun 2010, 16:11
Rufname:


AW: Spalten aus mehreren ASCII-Dateien automatisiert importi - AW: Spalten aus mehreren ASCII-Dateien automatisiert importi

Nach oben
       Version: Office 2007

Ach ja, eins muss noch gesagt werden:
Ich wünschte, es würden mehr Fragesteller ihre Problemstellung so schön klar, präzise und vollständig darstellen wie du. Das erleichtert die Arbeit doch sehr. Leider ist das nicht immer der Fall.

Gruß
Ben
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: mit sverweis spalten verbinden die nicht nebeneinander sind 2 poison30 4378 20. Mai 2005, 14:18
poison30 mit sverweis spalten verbinden die nicht nebeneinander sind
Keine neuen Beiträge Excel Formeln: Spalten Buchstarben ausgeben lassen ? 2 slicki 916 20. Apr 2005, 00:31
Hübi Spalten Buchstarben ausgeben lassen ?
Keine neuen Beiträge Excel Formeln: Vergleichen von Spalten UND Zeilen. 3 mojoe321 1836 15. März 2005, 17:14
Hübi Vergleichen von Spalten UND Zeilen.
Keine neuen Beiträge Excel Formeln: Werte aus einer Tabelle nach mehreren Kriterien auswerten 3 Daniel 2901 07. März 2005, 14:15
Hübi Werte aus einer Tabelle nach mehreren Kriterien auswerten
Keine neuen Beiträge Excel Formeln: Sverweis mit mehreren Ergebnissen 2 Holly 1743 19. Feb 2005, 21:23
Arnim Sverweis mit mehreren Ergebnissen
Keine neuen Beiträge Excel Formeln: Max. Anzahl von benutzten Spalten und Zeilen ermitteln 2 Fire 2461 01. Feb 2005, 11:14
Fire Max. Anzahl von benutzten Spalten und Zeilen ermitteln
Keine neuen Beiträge Excel Formeln: Runden von mehreren Zellen gleichzeitig 2 p_fr1968 3274 26. Jan 2005, 11:20
p_fr1968 Runden von mehreren Zellen gleichzeitig
Keine neuen Beiträge Excel Formeln: Spalten von zwei Tabellen abgleichen/vergleichen 2 RolloTomasi 4374 19. Jan 2005, 16:09
Darky Spalten von zwei Tabellen abgleichen/vergleichen
Keine neuen Beiträge Excel Formeln: summenprodukt mit monatsabfrage und mehreren bedingungen 2 Gast 3497 21. Dez 2004, 14:00
Kottan summenprodukt mit monatsabfrage und mehreren bedingungen
Keine neuen Beiträge Excel Formeln: SummeWenn mit 2 oder mehreren Bedingungen 1 jones 2000 1134 20. Dez 2004, 15:29
Kuwe SummeWenn mit 2 oder mehreren Bedingungen
Keine neuen Beiträge Excel Formeln: Will Werte addieren, in Bezug zu zwei anderen Spalten 3 Hardy_K_888 1971 02. Dez 2004, 12:00
ae Will Werte addieren, in Bezug zu zwei anderen Spalten
Keine neuen Beiträge Excel Formeln: SUMMEWENN mit mehreren Kriterien 6 beat. 1330 29. Okt 2004, 13:04
KrExceln SUMMEWENN mit mehreren Kriterien
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Expression Web Forum