andcon
Goto Top

Ausgewählte Werte einer .SPF Datei per VBA in excel geziehlt einfügen

Hallo liebe Admingemeinde!

Ich mache gerade ein Praktikum und versuche seit Tagen folgendes umzusetzen: Ich habe eine reihe .SPF datei (Bild) in der Pararmeter für eine Härteanlage stehen. Ziel ist es wie im Beispiel die .SPF dateien zu durchsuchen und ausgewählte Werte in eine Exceltabelle zu schreiben, die dann miteinander verglichen werden konnen.

1

Die .SPF fangen alle mit CYC1_*.SPF an. Die Werte die mich interessieren, stehen zwischen "=" und ";" .
Pro Datei soll quasi eine Zeile erzeugt werden die wie folgt ausschaut:


CYC1_683849 30.06.2017 22.5 71.0 550 80 8.0 5.0 28 0 3.0 1.5 5.0 ........ (siehe Bild)

Ich bin ein blutiger Anfänger und mache langsam Fortschritte, einlesen der gesamten dateinen untereinander klappt schon... aber die Woche neigt sich dem Ende und ich würde gern übers Wochenende auf den richtigen weg kommen. Für eure Unterstützung wäre ich euch sehr dankbar!!!
Grüße Andreas

Content-Key: 354425

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

Printed on: April 19, 2024 at 22:04 o'clock

Member: emeriks
emeriks Nov 10, 2017 updated at 14:41:05 (UTC)
Goto Top
Hi,
es wäre hilfreich für uns, wenn sehen könnten, was Du bereits an Code beisammen hast.

Schau Dir mal die Function Split an.

1. Zeile nach ";" splitten. Linker Teil ist interessant, also Element 0 des Array.
2. Linken Teil aus 1. nach " " (Leerzeichen) splitten. Rechter Teil ist interessant, also Element 1 dieses Array
3. Rechten Teil aus 2. nach "=" splitten. Linker Teil (Element 0) ist der Spaltenkopf, rechter Teil (Elemnet 1) der Wert. Im rechten Teil solltest Du noch "." durch "," ersetzen.

Wenn Du das hast, dann sehen wir weiter, wie Du das in die Tabelle bekommst.

    ...
    'Line sei die Variable mit der aktuellen Zeile  
    e() = Split(Line, ";")  
    Line = e(0)
    e() = Split(Line, " ")  
    Line = e(1)
    e() = Split(Line, "=")  
    Msgbox e(0) & vbnewline & e(1)
    .....

E.

Edit:
Ich seh gerade, dass da vor dem "=" auch ein Leerzeichen sein kann. Also solltest Du vorher "] =" durch "]=" ersetzen.

  ...
  Line = Replace(Line, "] =", "]=")  
  ...
Mitglied: 134464
134464 Nov 10, 2017 at 15:34:44 (UTC)
Goto Top
Machs doch schnell mit Powershell
 $lines = @()
gci 'd:\ordner\*.spf' -File | %{  
     $data = [pscustomobject]@{}
     [regex]::matches((gc $_.Fullname -raw), '(?ism)^([^=]+)=([\d\.-]+)').Captures | %{  
         $data | Add-Member -MemberType Noteproperty -Name $_.Groups[1].Value.Trim() -Value $_.Groups[2].Value.Trim() -Force
     }
     $lines += $data
}
$lines | export-csv 'd:\ordner\daten.csv' -NoType -Delimiter ";" -Encoding UTF8