Werte aus einer *.out Datei importieren

Hallo alle Zusammen,

ich habe folgendes Problem von dem ich nicht weiß ob es realisierbar ist.
Aus dem Berechnungsprogramm Ansys erhalte ich Werte in Tabellenform, 7 Spalten und 30 Reihen. Die Dateiform ist programmbedingt eine *.out, ich denke vergleichbar mit einer normalen Textdatei.
Diese Werte werden derzeit manuell zur weiteren Berechnung in Exel übertragen.

Gibt es eine Möglichkeit die einzelnen Zahlenwerte der *.out datei in Exel automatisch einlesen zu lassen?

Gruß
Micha

Wie sieht die ausgabe aus? sind Kommas oder Strichpunkte zwischen
den Werten einer Zeile oder hat eine Spalte eine fixe Breite?
Kannst du die ausgabe so verändern, daß zwischen den einzelnen
Werten kommas - oder besser Strichpunkte - stehen?

Am einfachsten ist es, die .out-Datei in eine .csv-Datei umzubennennen. Excel glaubt dann, es ist eine sog. CommaSeparatedValues-Datei (Werte durch ein Komma getrennt) und
importiert diese automatisch.

Gruß
Gerald

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Micha,
das sollte möglich sein. Wichtig ist, dass in der *.out die Dezimalstelle von Zahlen korrekt ist - muß „,“ sein für deutsche EXCEL-Version. Aber auch daran könnte man zur Not arbeiten.

Versuche die *.out Datei in EXCEL zu öffnen, wenn du dabei eine Tabelle bekommst, die die Daten in 7 Spalten, 30 Zeilen korrekt anzeigt hast du schon gewonnen. Ändere den Namen der Tabelle (hier verwendet EXCEL normalerweise den Namen der Datei) in einen Standard-Namen (z.B. Ansys). Speichere diese Datei als EXCEL-Datei.

Damit das ganze reibungslos funktioniert muß die out-EXCEL-Datei immer unter dem gleichen Namen gespeichert werden und der Name der Tabelle identisch sein. (Auch dafür kann man ein Makro erstellen)

In der Tabelle, die die weiteren Berechnungen durchführt, kannst du jetzt ein Makro per Aufzeichnung erstellen, das die Werte/Wertebereiche in der out-EXCEL-Datei kopiert und in der Auswerte-Tabelle an den richtigen Stellen wieder einfügt. Beim Einfügen sollte man die Option "Inhalte einfügen —> als Werte " verwendnet, damit die Formatierungen in der Auswertedatei erhalten bleiben.

Mit etwas mehr Aufwand/VBA-Kenntnissen kann man den gesamten Ablauf mit Anzeige entsprechender Dialogfenster per Makro automatisieren.

Falls EXCEL die *.out Datei nicht einlesen kann, dann wird es komplizierter. Dann muß man den genauen Aufbau/Inhalt der Datei kennen um ein Auslese/Einlese-Makro zu erstellen. Aber auch das ist möglich.

Gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Micha,

hier ist das Gerüst eines Makros, mit dem die Daten eingelesen werden können, wenn EXCEL die OUT-Datei problemlos öffnen kann. Die Komentare im Code sollten helfen das Ganze an deine Bedürfnisse anzupassen. Das Makro muß du in ein Modul deiner Auswerte/Berechnungsdatei einfügen

Sub Aus\_OUT\_Datei\_einlesen()
'
' Übernahme von Daten aus einer Textdatei mit strukturierten Daten in eine EXCEL-Tabelle
'
 AuswerteDatei = ActiveWorkbook.Name
' Eingabe des Namens der OUT-Datei
 OUT\_Datei = InputBox("Name der \*.OUT Datei: ", "Asys-Daten einlesen", "C:\Projekt\_ASYS\x???x.OUT")
'
' Um den nachfolgenden Teil des Makros korrekt zu erstellen, zeichnet man am besten das 
' Öffnen der OUT-Datei als Makro auf. Dann werden alle Parameter korrekt eingetragen.
' Anschließend nur noch 'OUT\_Datei' anstelle des aufgezeichneten Dateinamens eintragen
 Workbooks.OpenText FileName:=OUT\_Datei, Origin:=xlWindows, \_
 StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, \_
 ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, \_
 Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 4), Array( \_
 3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1))
' --- Ende des per Aufzeichnung zu ermittelnden Codes
 Asysdatei = ActiveWorkbook.Name
 Range("A1").Select
'
' --- Die nachfolgenden Schritte müssen mehrmals wiederholt werden, wenn die Daten
' in mehreren Teilbereichen übernommen werden sollen
 Windows(Asysdatei).Activate
 Range("A2:G31").Select 'zu kopierender Bereich
 Selection.Copy
 Windows(AuswerteDatei).Activate
 Sheets("AsysDaten").Select 'Name des Tabellenblattes in dem Daten eingefügt werden sollen
 Range("A2").Select ' Zelle ab der eingefügt werden soll
 Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= \_
 False, Transpose:=False
' --- Ende Wiederholungsschritte
 Range("A2").Select
 Selection.Copy:Application.CutCopyMode = False 'verhindert störende Meldung
 Windows(Asysdatei).Close
End Sub

Gruß
Franz

Hallo und vielen Dank für eure Hilfe,

das Einlesen funktioniert und ich habe mir durch eure Hilfe jede menge Arbeit erspart.

Gruß
Micha

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]