txt-import

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: txt-import
von: Stefan
Geschrieben am: 29.09.2003 15:27:03

hallo,

Ich habe ein größeres txt-file. Nun gibt es ja feine makros die es mir ermöglichen diese beliebig zu importieren. Jetzt habe ich nur leider ein problem. In dieser text tabelle werden die informationen wie folgt dargestellt


Nr_1 Text_1 Nr._2 Text_2 ert_1 Wert_2 Wert_3

Ich benötige aus dem File eigentlich nur die Werte aus Nr_1, Nr_2 und Wert_3

Das einzige Problem ist, das die Nr_1 und die Nr_2 erst eine einheitliche Zurodnung ermöglichen, die Werte der Nr_1 jedoch nicht durchgehend gelistet werden. Das sieht wie folgt aus:

Nr_1 Text_1 Nr._2 Text_2 Wert_1 Wert_2 Wert_3
10001 XY 555 XY 100 200 150
XY 666 XY 100 200 150
XY 777 XY 100 200 150
10002 XY 555 XY 100 200 150
XY 666 XY 100 200 150
.....

Das Problem ist nun, wie bekomme ich die Nr._1 durchgehend in den Spalten eingetragen, denn die Werte aus Nr_2 kommen häufiger vor und sind somit nicht direkt zuordnenbar.
Es sollte dann wie folgt aussehen, mit solchen Daten ist der Import für mich im Rahmen meiner Fähigkeiten wieder möglich.

Nr_1 Text_1 Nr._2 Text_2 Wert_1 Wert_2 Wert_3
10001 XY 555 XY 100 200 150
10001 XY 666 XY 100 200 150
10001 XY 777 XY 100 200 150
10002 XY 555 XY 100 200 150
10002 XY 666 XY 100 200 150

Vielen Dank


Gruß

Stefan

Bild


Betrifft: AW: txt-import
von: Reinhard
Geschrieben am: 29.09.2003 21:01:55

Hi Stefan,
probier das mal aus.
Gruß
Reinhard


Sub test()
Dim Zeile As Integer
Dim Textzeile As String
Dim n As Integer
Dim Prüf As Variant
Zeile = 2
Close
Open "c:\temp\tesst.txt" For Output As #1
Print #1, "10001 XY 555 XY 100 200 150"
Print #1, "XY 666 XY 100 200 150"
Print #1, "XY 777 XY 100 200 150"
Print #1, "10002 XY 555 XY 100 200 150"
Print #1, "XY 666 XY 100 200 150"
Close #1
Open "c:\temp\tesst.txt" For Input As #2
Range("a1:g65536").ClearContents
While Not EOF(2)
    Input #2, Textzeile
    Cells(Zeile, 1) = Textzeile
    Zeile = Zeile + 1
Wend
Close #2
Range(Cells(2, 1), Cells(Zeile - 1, 1)).Select
    Selection.TextToColumns Destination:=Range("a2"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1))
'Prüf = Range("a2")
For n = 2 To Zeile - 1
    If IsNumeric(Cells(n, 1)) Then
        Prüf = Cells(n, 1)
    Else
        
        Range(Cells(n, 1), Cells(n, 7)).Cut
        Cells(n, 2).Select
        ActiveSheet.Paste
        Cells(n, 1) = Prüf
    End If
Next n
Range("a1").Select
End Sub



Bild


Betrifft: AW: txt-import
von: stefan
Geschrieben am: 30.09.2003 10:22:28

Hallo Reinhard, ich mache mich gleich mal ans ausprobieren....Vielen Dank schon mal !!!

Gruß

Stefan


Bild


Betrifft: AW: txt-import...noch nicht ganz !!
von: Stefan
Geschrieben am: 30.09.2003 11:57:44

Hallo Reinhard,

ich habe dein Makro getestet. Da ich leider ein Anfänger in puncto Makro bin kann ich e snicht auf meine Anforderungen anpassen. Leider wird die angegebene Datei nicht entsprechend geöffnet und umgewandelt (es tauchen nur die Beispieldaten aus dem Makro auf).

Vielleicht könntest du mir ja nochmal etwas unter die armew greifen.

Vielen Dank

Gruß

Stefan


Bild


Betrifft: AW: txt-import...noch nicht ganz !!
von: Reinhard
Geschrieben am: 30.09.2003 12:16:26

Hallo Stefan,
die folgenden Zeilen kannst du streichen, sie dienten nur zum Anlegen der Testdatei tesst.txt.

Open "c:\temp\tesst.txt" For Output As #1
Print #1, "10001 XY 555 XY 100 200 150"
Print #1, "XY 666 XY 100 200 150"
Print #1, "XY 777 XY 100 200 150"
Print #1, "10002 XY 555 XY 100 200 150"
Print #1, "XY 666 XY 100 200 150"
Close #1


Diese Zeile musst du umschreiben, also Pfad und Dateinamen deiner datei angeben:
Open "c:\temp\tesst.txt" For Output As #1

Gruß
Reinhard








Sub test()
Dim Zeile As Integer
Dim Textzeile As String
Dim n As Integer
Dim Prüf As Variant
Zeile = 2
Close
Open "c:\temp\tesst.txt" For Output As #1
Print #1, "10001 XY 555 XY 100 200 150"
Print #1, "XY 666 XY 100 200 150"
Print #1, "XY 777 XY 100 200 150"
Print #1, "10002 XY 555 XY 100 200 150"
Print #1, "XY 666 XY 100 200 150"
Close #1
Open "c:\temp\tesst.txt" For Input As #2
Range("a1:g65536").ClearContents
While Not EOF(2)
    Input #2, Textzeile
    Cells(Zeile, 1) = Textzeile
    Zeile = Zeile + 1
Wend
Close #2
Range(Cells(2, 1), Cells(Zeile - 1, 1)).Select
    Selection.TextToColumns Destination:=Range("a2"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1))
For n = 2 To Zeile - 1
    If IsNumeric(Cells(n, 1)) Then
        Prüf = Cells(n, 1)
    Else
        
        Range(Cells(n, 1), Cells(n, 7)).Cut
        Cells(n, 2).Select
        ActiveSheet.Paste
        Cells(n, 1) = Prüf
    End If
Next n
Range("a1").Select
End Sub



Bild


Betrifft: AW: txt-import...noch nicht ganz !! die Zweite
von: Stefan
Geschrieben am: 30.09.2003 13:50:09

Hallo Reinhard,

fantastisch. Leider ist das format meiner tabelle nicht so geeignet für das makro.
Dann habe ich leider noch eine verschiebung in meiner mail hier gehabt.
ich versuche mich mal in dein makro einzuarbeiten....
den vom prinzip her arbeitet es völlig korrekt, nur eben nicht so mit meiner tabelle (da kommen auch noch platzhalterzeichen etc. vor, die nicht benötigt werden.

nochmal kurz (da ja die vorherige darstellung nicht ganzz korrekt war
eine zeile enthält zahlreich informationen, wo die erste und dritte spalte momentan im mittelpunkt stehen.

Wert_1 Wert_2 Wert_3...
10001 XY 555
XY 666
XY 756

10002 XY 555
XY 666
XY 756

Die Werte in der Spalte 1 müssen durchgehend sein, da Ergebnis sieht dann so aus:
10001 XY 555
10001 XY 666
10001 XY 756

10002 XY 555
10002 XY 666
10002 XY 756

Dennoich erstmal vielen, vielen dank...ich werde mal versuchen es irgendwie hinzubekommen !

Gruß

Stefan


Bild


Betrifft: AW: txt-import...noch nicht ganz !! die Zweite
von: Reinhard
Geschrieben am: 30.09.2003 14:13:45

Hi Stefan,
dann schreib doch mal noch genauer wie das Format aussieht, wo da die Platzhalter oder sonstiges ist, am besten eine Beispieltabelle hochladen oder hier ein Muster wie
Wert_1 Wert_2 Wert_3...
10001 XY 555
XY 666
XY 756
Und noch ein Tipp wennn du das so schreibst:

<pre>   
Wert_1 Wert_2 Wert_3...
10001   XY     555
  XY    666
  XY    756
</pre>
erscheint es auch so:
Wert_1 Wert_2 Wert_3...
10001   XY     555
  XY    666
  XY    756

Gruß
Reinhard


Bild


Betrifft: AW: txt-import...noch nicht ganz !! die Zweite
von: Stefan
Geschrieben am: 30.09.2003 17:13:01

Hallo Reinhard,

vielen Dank das du dir so viel Mühe gibst und Geduld mit mir hast :

Anbei eine Darstellung des Berichtformates

https://www.herber.de/bbs/user/1220.txt

Im Prinzip benötigte ich die erste, dritte und letzte Spalte (Spaltengrösse ist durch die gestrichelten Linie markiert). Den Rest brauche ich nicht.
Nur leider gibt dieser Bericht immer nur den ersten wert an (Spalte Wert_1) und listest dann in Spalte Wert_3 die entsprechenden Untergruppen auf. der nachteil besteht nun darin, dass die untergruppen gleiche nummern haben können und nur die verbindung von haupt und untergruppe (Spalte Wert_! und Wert_3) eine eindeutige Zuordnung zulassen. Folglich besteht mein Bemühen darin, eine Liste zu bekommen, die den Wert durchgehen wiedergibt.
Kann man das verstehen ????


Bild


Betrifft: AW: txt-import...noch nicht ganz !! die Zweite
von: Reinhard
Geschrieben am: 01.10.2003 18:36:34

Hi Stefan,
deute ich das richtig, in der einzulesenden Textdatei stehen erst
ca. 10 Zeilen die nicht gebraucht werden??
(123=Nummer xyz=Ziffernfolge)

Danach folgen viele Blöcke, wobei jeder Block bzw. dessen Zeilen so aufgebaut sind:
8 Eintragungen der Form:       123 abc 234 def ghi jkl mno  pqr
mehrere Eintragungen der Form: 234 def ghi jkl mno  pqr
Einen Eintrag der Form:        xyz def ghi jkl mno  pqr
Nach dem Makro soll das dann so aussehen:?
123 abc 234 def ghi jkl mno  pqr
123 abc 234 def ghi jkl mno  pqr
123 abc 234 def ghi jkl mno  pqr
123 abc 234 def ghi jkl mno  pqr
123 abc xyz def ghi jkl mno  pqr 
Oder so:?
123 234 pqr
123 234 pqr
123 234 pqr
123 234 pqr
123 xyz pqr

Gruß
Reinhard


Bild


Betrifft: AW: txt-import...noch nicht ganz !! die Zweite
von: stefan
Geschrieben am: 01.10.2003 20:03:34

Hallo Reinhard,

fast...:-)
Es kommen Blattbeschreibung usw. (alles ohne Nutzen für mich)mein Problem liegt darin
x Eintragungen der Form: 123 abc 234 def ghi jkl mno pqr ....
abc 235 def ghi jkl mno pqr ....

die erste Spalte (hier 123) muesste einfach durchgehend angegeben werden, in dieser tabelle wird sie immer nur in der ersten zeile angegeben.
ist irgendwie ein wenig knifflig, aber an der tabelle kann ich leider nix machen. naja, ich habe mich mal darin versucht über mnakro aufzeichnen das Problem zu lösen (funktioniert auch fast, denn leider gibt es noch alphanummerische zeichen die auch so problematisch sind...)
Ich denke mal wir lassen es an dieser stelle. ich möchte deine zeit auch nicht überbeanspruchen. ich werde mich in der nächsten zeit ein wenig in VB einarbeiten, so kann ich dann auch mehr mitreden.

tretzdem vielen dank und bis bald

gruß

stefan


Bild


Betrifft: Okay, letzte Tipps
von: Reinhard
Geschrieben am: 02.10.2003 15:33:35

Hi Stefan,
ich würde als workaround, die Txt-Tabelle nach Excel kopieren.
Dann in Excel, alles Markieren und über "Daten"-->"Text in Spalten"
in Einzelzellen auflösen.
Dann kleine Hilfsmakros erstellen, die etwa folgendes machen:
In einem Markierten Bereich in Spalte A alle Zellen der Zeile um 2 nach rechts verschieben, dann
den darüber stehenden Wert in A in die markierte A-spalte einfügen .
D.h. kleine Hilfsmakros auf Commandbuttons legen, die dir erlauben schnell manuell Änderungen in der Tabelle durchzuführen auch wenn die tabelle groß sein mag.
Gruß
Reinhard


 Bild

Beiträge aus den Excel-Beispielen zum Thema " Kommentar automatisch anpassen"