Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
412to416
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
412to416
412to416
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

NE

NE
NE
Hallo zusammen,
ich hab ein txt-File das schaut etwa ab Zeile 1 so aus:
AcDbPolyline: 0
42,6016337897688;0
0;47,5005143514831
-16,2585945120821;0
0;-10,7682271058531
-16,9264543215169;-6,06026602840103
-25,0437581194576;0
15,6271731632879;-30,6720212172289
AcDbPolyline: 1
42,6016337897688;0
15,083133657257;21,8987200871411
-31,341728169339;25,601794264342
0;-20,3573632760519
-14,4413926826466;-3,68049126415613
-11,9016465950402;-8,4516748457959
0;-15,0109849654792
AcDbPolyline: 2
60,8986583075515;8,94034732949965
-18,2970245177827;38,5601670219834
-16,2585945120821;0
0;-20,3573632760519
-10,2902497212156;-12,132166109952
-16,0527895564711;0
0;-15,0109849654792
Nun wollte ich das Teil in xl einlesen, jedoch
ergibt das recht komische Werte von wegen 426016337897688 bzw. 4,2602E+14
Was mach ich denn da falsch?
lg Nancy
--

Sub einlesen()
Dim ff As Integer
Dim zeile As String
Dim b As Long
Dim arrZeile As Variant
ff = FreeFile
Open "c:\dummy\block\dimension.txt" For Input As #ff
b = 1
While Not EOF(ff)
Line Input #ff, zeile
If InStr(1, zeile, "AcDb") Then
Sheets(1).Cells(b, 1) = zeile
b = b + 1
Else
arrZeile = Split(zeile, ";")
With Sheets(1)
.Cells(b, 2) = arrZeile(0)
.Cells(b, 3) = arrZeile(1)
.Cells(b, 5) = Cells(b, 2) + Cells(b - 1, 5)
.Cells(b, 6) = Cells(b, 3) + Cells(b - 1, 6)
End With
End If
b = b + 1
'************ erstmal außen vor, obwohl schön wär's ;-) **********
'        Charts.Add
'        ActiveChart.ChartType = xlXYScatterLines
'        ActiveChart.SetSourceData Source:=Sheets(1).Range("E" & ? &":F" & ? & "), PlotBy _
'        :=xlColumns
'        ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
Wend
Close #ff
End Sub

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Ohhh, sorry wg. Betreff o.T.
NE
.
AW: Ohhh, sorry wg. Betreff o.T.
Dennis
Den effekt kenne ich wenn die zellen in xl falsch formatiert sind.....
vielleicht hilfts..
AW: Ohhh, sorry wg. Betreff o.T.
NE
Hi Dennis,
er schmeißt mir die Kommas raus, obwohl die ja nun definitiv in der txt da sind ...
Ich versteh's einfach nicht.
lg Nancy
AW: Ohhh, sorry wg. Betreff o.T.
Hans
Hast Du Dir mal überlegt, dass VBA nur der Englischen Sprache mächtig ist und desshalb den da üblichen Dezimalpunkt bei Zahlen erwartet:
Füge mal sowas wie

While InStr(zeile, ",") &gt 0
Mid(zeile, InStr(zeile, ","), 1) = "."
Wend

ein...
Gruß HW
AW: Ohhh, sorry wg. Betreff o.T.
NE
Hi HW,
auch Dir Danke, aber klappt jetz mit cdec(arrzeile())
lg Nancy
Anzeige
Textdaten einlesen
Reinhard
Hi Nancy, probiersmal so:

Sub einlesen()
Dim ff As Integer
Dim zeile As String
Dim b As Long
Dim arrZeile As Variant
ff = FreeFile
ActiveWindow.DisplayZeros = False
Open "c:\temp\ne.txt" For Input As #ff
b = 1
While Not EOF(ff)
Line Input #ff, zeile
arrZeile = Split(zeile, ";")
If InStr(1, zeile, "AcDb") Then
Sheets(1).Cells(b, 1) = zeile
'b = b + 1
Else
arrZeile = Split(zeile, ";")
'MsgBox arrZeile(0)
'MsgBox arrZeile(1)
With Sheets(1)
.Cells(b, 2) = CDec(arrZeile(0))
.Cells(b, 3) = CDec(arrZeile(1))
.Cells(b, 5) = Cells(b, 2) + Cells(b - 1, 5)
.Cells(b, 6) = Cells(b, 3) + Cells(b - 1, 6)
End With
End If
b = b + 1
'************ erstmal außen vor, obwohl schön wär's ;-) **********
'        Charts.Add
'        ActiveChart.ChartType = xlXYScatterLines
'        ActiveChart.SetSourceData Source:=Sheets(1).Range("E" & ? &":F" & ? & "), PlotBy _
'        :=xlColumns
'        ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
Wend
Close #ff
End Sub

Gruß
Reinhard
Anzeige
AW: Textdaten einlesen
NE
Hi Reinhard,
erstmal Danke für den 'vernünftigen' Betreff ;-)
Dann nochmal Danke für's cdec(), irgendwie sieht man im Forum die Fehler
anderer besser als IMHO die eigenen, schon komisch irgendwie ...
Danke klappt jetzt :-)
Jetz mal eine Frage noch:
Wie bekomme ich das hin, dass jeweils die erste 'ObjektDatenzeile' also Punkt1 (x,y)
ganz am Ende des jeweiligen Bereichs nochmal erscheint?
Ich mein' sonst ist das 'Diagramm' nicht geschlossen,
der erste Punkt muss also wieder der letzte sein.
lg Nancy
AW: Textdaten einlesen
Reinhard
Hi Nancy,
wo stehen denn deine x/y-werte? in Spaltenpaar b/c oder e/f?
und für jede acdbpolylinie soll eine Linie gezeichnet werden?
Gruß
Reinhard
Anzeige
AW: Textdaten einlesen
NE
Hi Reinhard,
die Diagramme wollte ich aus den jeweiligen Bereichen in E/F erstellen,
wobei halt pro AcDbPolylinie ein Diagramm erstellt werden soll.
Um das jeweilige Diagramm vollständig zu schliessen, brauch' ich aber die
erste Zeile des jeweiligen Bereichs nochmal als letze Zeile im Bereich.
Du hast wohl recht, Ich könnt' jetzt mal schauen, das gleich beim txt-Erstellen in den Griff zu bekommen ...
Angenommen, das bekäm ich ich in den Griff und es gäbe eine letzte Zeile = erste Zeile
Aber wie müsste dann die Zeile lauten ? :
'ActiveChart.SetSourceData Source:=Sheets(1).Range("E" & ? &":F" & ? &"), PlotBy _
' :=xlColumns
Klingt erstmal kompliziert, ich weiss ...
aber ich weiss nicht wie ichs anders rüberbringen soll
lg Nancy
Anzeige
AW: Textdaten einlesen
reinhard
Hi Nancy,
nach dem Diagramm schau ich mal morgen oder so, probiers erstmal so wie unten gezeigt, kann man sicher noch verbessern :-)
Gruß
Reinhard

Sub einlesen()
Dim ff As Integer
Dim zeile As String
Dim b As Long
Dim arrZeile As Variant
ff = FreeFile
ActiveWindow.DisplayZeros = False
Open "c:\temp\ne.txt" For Input As #ff
b = 1
anf = 2
While Not EOF(ff)
Line Input #ff, zeile
arrZeile = Split(zeile, ";")
If InStr(1, zeile, "AcDb") Then
b = b + 1
Sheets(1).Cells(b, 1) = zeile
If anf <> 2 Then
Cells(b - 1, 5) = Cells(anf, 5)
Cells(b - 1, 6) = Cells(anf, 6)
End If
anf = b + 1
Else
arrZeile = Split(zeile, ";")
With Sheets(1)
.Cells(b, 2) = CDec(arrZeile(0))
.Cells(b, 3) = CDec(arrZeile(1))
.Cells(b, 5) = Cells(b, 2) + Cells(b - 1, 5)
.Cells(b, 6) = Cells(b, 3) + Cells(b - 1, 6)
End With
End If
b = b + 1
Wend
Close #ff
Cells(b - 1, 5) = Cells(anf, 5)
Cells(b - 1, 6) = Cells(anf, 6)
'        Charts.Add
'        ActiveChart.ChartType = xlXYScatterLines
'        ActiveChart.SetSourceData Source:=Bereich, PlotBy:=xlColumns
'        ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
End Sub

Anzeige
Danke
NE
Hi Reinhard,
hätt' ich doch beinahe vergessen, danke für den Ansatz :-)
lg Nancy
Textdaten einlesen und dyn. Diagramm erzeugen
Reinhard
Hi Nancy,
folgendes Makro erzeugt ein hübsches buntes Diagramm. Ob es brauchbar ist, keine Ahnung, kenn mich mit Diagrammen nicht aus *gg. Musste halt ggfs. anpassen.
Gruß
Reinhard

Sub einlesen2()
Dim ff As Integer
Dim zeile As String
Dim b As Long
Dim arrZeile As Variant
ff = FreeFile
ActiveWindow.DisplayZeros = False
Dim Anfg(100)
Dim Ende(100)
Anfg(1) = 0
b = 1
Zae = 0
Open "c:\temp\ne.txt" For Input As #ff
While Not EOF(ff)
Line Input #ff, zeile
arrZeile = Split(zeile, ";")
If InStr(1, zeile, "AcDb") Then
Zae = Zae + 1
If Anfg(Zae) <> 0 Then
Cells(b, 5) = Cells(Anfg(Zae), 5)
Cells(b, 6) = Cells(Anfg(Zae), 6)
b = b + 1
End If
Sheets(1).Cells(b, 1) = zeile
Ende(Zae - 1) = b - 1
Anfg(Zae) = b + 1
Else
arrZeile = Split(zeile, ";")
With Sheets(1)
.Cells(b, 2) = CDec(arrZeile(0))
.Cells(b, 3) = CDec(arrZeile(1))
.Cells(b, 5) = Cells(b, 2) + Cells(b - 1, 5)
.Cells(b, 6) = Cells(b, 3) + Cells(b - 1, 6)
End With
End If
b = b + 1
Wend
Close #ff
Cells(b, 5) = Cells(Anfg(Zae), 5)
Cells(b, 6) = Cells(Anfg(Zae), 6)
Ende(Zae) = b
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
For n = 1 To Zae
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(n).XValues = "=Tabelle1!R" & Anfg(n) & "C5:R" & Ende(n) & "C5"
ActiveChart.SeriesCollection(n).Values = "=Tabelle1!R" & Anfg(n) & "C6:R" & Ende(n) & "C6"
ActiveChart.SeriesCollection(n).Name = "=Tabelle1!R" & Anfg(n) - 1 & "C1"
Next n
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
Range("A1").Select
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige