Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Imprtieren von bestimmten Werten aus txt.Datei

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Imprtieren von bestimmten Werten aus txt.Datei (3645 mal gelesen)
jonnyw79
Mitglied
Student


Sehen Sie sich das Profil von jonnyw79 an!   Senden Sie eine Private Message an jonnyw79  Schreiben Sie einen Gästebucheintrag für jonnyw79

Beiträge: 67
Registriert: 18.11.2005

erstellt am: 17. Jul. 2006 11:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!

Ich schreibe gerade an meiner Diplomarbeit und stehe vor der Aufgabe bestimmte Werte (Zahlenwerte) aus einer bzw. mehreren txt-Dateien in Excel zu importieren (Es soll also eine lästige Eingabe der vielen Zahlenwerte vermieden werden!). In Excel soll dann mit diesen Zahlenwerten weitergerechnet werden.
Da jedoch die txt. Dateien automatisch von einem CAD Programm erzeugt werden, beinhalten sie nicht nur die erforderlichen Werte, sondern auch viel unnötigen Text.
Jetzt zu meiner Frage:
Kann ich über ein Makro/Basicprogramm erreichen, dass nur die von mir erforderlichen Zahlenwerte importiert werden?

Die Werte sehen wie folgt aus:

VOLUMEN =  6.1902283e+05  MM^3
FLÄCHENINHALT =  7.0004400e+04  MM^2
MITTLERE DICHTE =  7.8500000e-06 KILOGRAMM / MM^3
MASSE =  4.8593292e+00 KILOGRAMM

Ich bräuchte also nur die Zahlenwerte für Volumen etc.

Vielen Dank für Eure Hilfe!!!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Teddibaer
Ehrenmitglied V.I.P. h.c.
Struktur-Experte



Sehen Sie sich das Profil von Teddibaer an!   Senden Sie eine Private Message an Teddibaer  Schreiben Sie einen Gästebucheintrag für Teddibaer

Beiträge: 2125
Registriert: 09.02.2004

**CSWP 06/2004**
--
MacBook Air M1
MacBook Pro M1-Max

erstellt am: 17. Jul. 2006 11:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für jonnyw79 10 Unities + Antwort hilfreich

Im Excel:

Daten - "Text in Spalten"
oder
die Funktionen Links() bzw. Rechts()

Da muss man doch was machen ... können 

------------------
Gruß, der Teddibaer

Besucht mich doch mal ...
----------------
Es gibt nichts Gutes, ausser man tut es 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

heiko_hems
Mitglied
Freier Architekt


Sehen Sie sich das Profil von heiko_hems an!   Senden Sie eine Private Message an heiko_hems  Schreiben Sie einen Gästebucheintrag für heiko_hems

Beiträge: 1295
Registriert: 14.01.2005

erstellt am: 17. Jul. 2006 12:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für jonnyw79 10 Unities + Antwort hilfreich


TextKonvert.xls.txt

 
Hi jonnyw,
und herzlich willkommen  ...

Ich würde den Ansatz von Teddibär teilen, aber deine Quelle ist ein bisschen chaotisch.
Stehen nach den Zahlen wirklich teilweise 2 Leerzeichen vor der Einheit ?
Wenn nicht dann sollte es über Daten>TextinSpalten ganz brauchbar funktionieren (s.Anlage, einfach .txt löschen).

Gruß
Heiko

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 17. Jul. 2006 12:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für jonnyw79 10 Unities + Antwort hilfreich


Konv.jpg

 
Hallo,
wie importierst Du denn die txt? Ganz normal über "öffnen" -> alle Dateien (*.*)?
Dann gibt es doch diesen Konvertierungsassistenten (s. Bildchen) bei, da kann man sagen, daß die Werte "Leerzeichen-getrennt" sind.
Als nächsten Schritt läßt man sich nur die Spalten mit den Zahlen einlesen.
Zum Schluß dann in Excel die Zellen als Zahl formatieren.
Wenn's nicht zuviele sind, händisch, sonst mal Makro versuchen (mit Rekorder kommt bißchen was, dann anpassen)
HTHHope this helps (Hoffe, es hilft weiter)
Nicole

------------------
Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

jonnyw79
Mitglied
Student


Sehen Sie sich das Profil von jonnyw79 an!   Senden Sie eine Private Message an jonnyw79  Schreiben Sie einen Gästebucheintrag für jonnyw79

Beiträge: 67
Registriert: 18.11.2005

erstellt am: 17. Jul. 2006 13:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank schonmal an Alle!!!

Habt mir schon etwas weitergeholfen!
Allerdings ist das noch nicht ganz die Lösung.
Vieleicht kam meine Frage eben nicht so richtig rüber.
Ich versuchs einfach nochmal:

Habe mehrere Textdateien vorliegen, die alle bis auf die Zahlenwerte gleich aussehen (Volumen, Flächeninhalt usw.). Diese sollen jetzt in Excel zur weiteren Nutzung importiert werden.
Von diesen Dateien brauche jedoch nicht alle Daten, sondern nur einige.
Z.B. nur den Flächeninhalt und die Mittlere Dichte. Den Rest der Spalte brauch ich nicht.

VOLUMEN =  6.1902283e+05  MM^3
FLÄCHENINHALT =  7.0004400e+04  MM^2
MITTLERE DICHTE =  7.8500000e-06 KILOGRAMM / MM^3
MASSE =  4.8593292e+00 KILOGRAMM

Da dieser Import ständig vorkommt, soll er weitgehend automatisiert werden. Will heißen aus allen vorhandenen txt.Dateien sollen wenn möglich auf Knopfdruck z.B
nur die Daten von Flächeninhalt und Mittlere Dichte herausgelesen werden. (Natürlich könnte man aus den vielen txt. Dateien auch eine grosse mit allen Daten machen, falls das irgendwie hilft.)
Die Auswahl der Daten ändert sich im späteren Verlauf nicht mehr. Es werden also immer nur Flächeninhalt und Mittlere Dichte importiert.

Nach euren Lösungsvorschlägen wird aber immer die komplette Spalte  mit allen nicht benötigten Daten importiert. Oder kann ich das sonst wie noch bestimmen? Und ich müsste die jeweilige Trennung der Daten in dem Importdialog immer jedesmal von Hand durchführen.
Gibt es keine Möglichkeit da irgendein Visual Basic Makro zu programmieren? Wie mache ich das am besten? Hab zwar etwas Erfahrung im Programmieren jedoch nicht mit Visual Basic.


Danke für eure Mühe!

Gruss Jonnyw79

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bst
Mitglied



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

.

erstellt am: 17. Jul. 2006 15:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für jonnyw79 10 Unities + Antwort hilfreich

Hallo,

Du sprichst von Spalten. Stehen die Daten in der Textdatei denn nebeneinander ? Wenn ja, welches Trennzeichen ?

Oder stehen sie untereinander ?

Dann versuche mal sowas.

CUSee You, Bernd
--

Code:
Option Explicit

Const StartPfad = "E:\TEST\"  ' MIT \ am ENDE !

Dim objRegExp As Object, objMatchCollection As Object

Function ReadValues(ByVal strFname As String, ByRef dblFlaeche As Double, ByRef dblDichte As Double) As Boolean
  Dim intHandle As Integer
  Dim strOneLine As String
 
  ReadValues = False
  intHandle = FreeFile
  Open strFname For Input As #intHandle
  While Not EOF(intHandle)
      Line Input #intHandle, strOneLine
      Set objMatchCollection = objRegExp.Execute(strOneLine)
      If objMatchCollection.Count Then
        With objMatchCollection(0)
            ReadValues = True
            If UCase(.SubMatches(0)) = "FLÄCHENINHALT" Then
              dblFlaeche = Val(.SubMatches(1))
            ElseIf UCase(.SubMatches(0)) = "MITTLERE DICHTE" Then
              dblDichte = Val(.SubMatches(1))
            End If
        End With
      End If
      Set objMatchCollection = Nothing
  Wend
  Close #intHandle
End Function

Sub ReadAllValues()
  Dim strName As String, dblFlaeche As Double, dblDichte As Double
 
  Set objRegExp = CreateObject("vbscript.regexp")
  objRegExp.Pattern = "^ *(FLÄCHENINHALT|MITTLERE DICHTE) *= *(\d+\.\d*E[-+]\d+)"
  objRegExp.IgnoreCase = True
 
  strName = Dir(StartPfad & "*.txt")
  While strName <> ""
      If ReadValues(StartPfad & strName, dblFlaeche, dblDichte) = True Then
        Debug.Print strName, dblFlaeche, dblDichte
      Else
        Debug.Print strName, "Kein Eintrag!"
      End If
      strName = Dir
  Wend
  Set objRegExp = Nothing
End Sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

U_Suess
Ehrenmitglied V.I.P. h.c.
CAD-Admin / manchmal Konstrukteur



Sehen Sie sich das Profil von U_Suess an!   Senden Sie eine Private Message an U_Suess  Schreiben Sie einen Gästebucheintrag für U_Suess

Beiträge: 10560
Registriert: 14.11.2001

Windows 7
Excel 2010

erstellt am: 17. Jul. 2006 16:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für jonnyw79 10 Unities + Antwort hilfreich

Vielleicht sollte der Fragesteller mal überlegen, ob es nicht besser ist, im Ausgangssystem schon ordentliche Daten zu generieren.

Da es sich IMHO um die Massenberechnungsdateien von Pro/E handelt, kann er die Werte aus der Datei der übergeordneten Baugruppe herausnehmen.
Oder er nimmt den Umweg über eine Zeichnung mit einer Tabelle mit Wiederholbereich und gibt diese als *.txt aus. (Nähere Erläuterungen bekommst man dann im Pro/E-Forum.)

------------------
Gruß
Udo            Keine Panik, Du arbeitest mit Pro/E! Und Du hast cad.de gefunden!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 17. Jul. 2006 16:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für jonnyw79 10 Unities + Antwort hilfreich


Import.xls.txt

 
So, schön ist wie immer bei mir anders, aber vielleicht tut's ja schon..
Vorgehensweise:
1. meine Datei speichern.
2. Datei: ImportierteTexte.xls anlegen.
3. Die Textdateien müssen immer gleich aufgebaut sein!!
4. meine Datei öffnen und Makro "TexteImportieren" ausführen
5. Dialog folgen, heißt: zu öffnende Datei auswählen, falls bei Dateityp noch nicht vorbelegt: "Textdateien" angeben, Dialog der Konvertierung einfach mit "Fertigstellen" schließen.
6. Überschreibwarnung der ImportierteTexte-Datei mit "ja" bestätigen
7. Datei ImportierteTexte schließen
8. Datei Import.txt nicht die .xls! schließen (Änderungen nicht speichern)
9. In meiner Datei erneut das Makro ausführen und folglich ab Schritt 5 alles wie gehabt.

Ergebnis:
In der Datei Importierte Texte werden nach und nach alle Texte unten angehängt, ohne zwischenzeilen oder sonstigen Schnack.

Ich weiß, daß bei dieser Lösung durchaus noch viel "Luft nach oben" ist, speziell im unteren Teil  aber besser krieg ich's grad nich hin 
Gruß,
Nicole

------------------
Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

jonnyw79
Mitglied
Student


Sehen Sie sich das Profil von jonnyw79 an!   Senden Sie eine Private Message an jonnyw79  Schreiben Sie einen Gästebucheintrag für jonnyw79

Beiträge: 67
Registriert: 18.11.2005

erstellt am: 13. Sep. 2006 10:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

@ bst
Hallo dein Programmcode funktioniert soweit ganz gut!! Vielen Dank!!
Hab aber noch ein kleines Problem.
In einer Zeile meiner txt-Datei steht folgendes:

X  Y  Z -5.8436909e+01 -3.3615436e+01 -4.4806354e+02  MM

nun soll der Wert -5.8436909e+01 als X, -3.3615436e+01 als Y und -4.4806354e+02  als Z ausgelesen werden.
Wie kann ich das Anstellen? Kann ich als Trennzeichen eine Leerstelle angeben?
Vielen Dank schonmal!

Gruss jonnyw79

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bst
Mitglied



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

.

erstellt am: 13. Sep. 2006 13:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für jonnyw79 10 Unities + Antwort hilfreich

Hi jonnyw79,

ist die Reihenfolge immer X Y Z oder muß man das auswerten ?

Und, ist das zusätzlich zu obigen FLÄCHENINHALT bzw. MITTLERE DICHTE oder ist das was Neues ?

CUSee You, Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

jonnyw79
Mitglied
Student


Sehen Sie sich das Profil von jonnyw79 an!   Senden Sie eine Private Message an jonnyw79  Schreiben Sie einen Gästebucheintrag für jonnyw79

Beiträge: 67
Registriert: 18.11.2005

erstellt am: 13. Sep. 2006 14:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Bernd!

Die Zahlenwerte FÜR X Y und Z sollen noch zusätzlich zu MITTLERE DICHTE und FLÄCHENINHALT ausgelesen werden.
Dabei sind alle txt-Dateien immer gleich aufgebaut:

VOLUMEN =  3.8004337e+05  MM^3
FLÄCHENINHALT =  4.9801329e+04  MM^2
MITTLERE DICHTE =  7.8500000e-06 KILOGRAMM / MM^3
MASSE =  2.9833405e+00 KILOGRAMM

SCHWERPUNKT in Bezug auf den Koordinatenrahmen _DC_MDEG_77L:
X  Y  Z -1.5210928e+01 -5.6813123e-02  6.8168146e-02  MM

d.h.: die Bezeichnung "X  Y  Z" ist immer gleich. Lediglich die Werte selbst sind unterschiedlich. Dabei sind die Stellenanzahl der Werte auch immer gleich. Der einzige Unterschied besteht darin, dass manche Werte ein positives bzw. negatives Vorzeichen haben.
Das Vorzeichen befindet sich aber auch immer an der gleichen Stelle. (Bei positiven Werten sind halt zwei Leerstellen zwischen den Werten. Bei negativen nur eine)

Hoffe ich konnte deine Frage damit klären.

Gruss Jonnyw79

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bst
Mitglied



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

.

erstellt am: 13. Sep. 2006 14:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für jonnyw79 10 Unities + Antwort hilfreich

Hi jonnyw79,

versuch's mal so.

Vielleicht wäre es hier vorzuziehen 2 Mal zu suchen, da die beiden zu suchenden Ausdrücke doch sehr unterschiedlich sind. Und dadurch das Suchmuster ziemlich kompliziert wird.

CUSee You, Bernd
--

Code:

Option Explicit

Const StartPfad = "E:\TEST\" ' MIT \ am ENDE !

Dim objRegExp As Object, objMatchCollection As Object

Type tInputData
Flaeche As Double
Dichte As Double
X As Double
Y As Double
Z As Double
End Type

Function ReadValues(ByVal strFname As String, ByRef inp As tInputData) As Boolean
Dim intHandle As Integer
Dim strOneLine As String

ReadValues = False
intHandle = FreeFile
Open strFname For Input As #intHandle
While Not EOF(intHandle)
Line Input #intHandle, strOneLine
Set objMatchCollection = objRegExp.Execute(strOneLine)
If objMatchCollection.Count Then
With objMatchCollection(0)
ReadValues = True
If UCase(.SubMatches(0)) = "FLÄCHENINHALT" Then
inp.Flaeche = Val(.SubMatches(1))
ElseIf UCase(.SubMatches(0)) = "MITTLERE DICHTE" Then
inp.Dichte = Val(.SubMatches(1))
Else
inp.X = Val(.SubMatches(3))
inp.Y = Val(.SubMatches(4))
inp.Z = Val(.SubMatches(5))
End If
End With
End If
Set objMatchCollection = Nothing
Wend
Close #intHandle
End Function

Sub ReadAllValues()
Dim strName As String, inp As tInputData
Dim strZahl As String

strZahl = "((?:[+-] *)?\d+\.\d*E[-+]\d+)"
Set objRegExp = CreateObject("vbscript.regexp")
objRegExp.Pattern = "^ *(? :(FLÄCHENINHALT|MITTLERE DICHTE) *= *" & strZahl & ")|(X +Y +Z +)" & _
strZahl & " +" & strZahl & " +" & strZahl
objRegExp.IgnoreCase = True

strName = Dir(StartPfad & "*.txt")
While strName <> ""
inp.Dichte = 0: inp.Flaeche = 0: inp.X = 0: inp.Y = 0: inp.Z = 0
If ReadValues(StartPfad & strName, inp) = True Then
Debug.Print strName, inp.Flaeche, inp.Dichte, inp.X, inp.Y, inp.Z
Else
Debug.Print strName, "Kein Eintrag!"
End If
strName = Dir
Wend
Set objRegExp = Nothing
End Sub


[Diese Nachricht wurde von bst am 13. Sep. 2006 editiert.]

[Diese Nachricht wurde von bst am 13. Sep. 2006 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz