# TXT datei einlesen und in in Sheet anzeigen. newbee need help ;)



## The Brain (7. September 2006)

hi!

ja, newbees erster post (und es wird nicht der letzte gewesen sein).  

ich bin seit 2 Tagen nach ca 6 Jahren wieder mit VB programmierung geschäftigt. Ich weis als so gut wie nüscht mehr. in den letzten tagen ging es aber etwas vorran doch ich komme mit einigen sachen nicht ganz klar. drum ein paar fragen. aber erstma die aufgabenstellung die ich habe. 

Ich habe ich ein Temperaturmessgreät was Temps speichert. diese kann ich über den COM1 auf den rechner in einer TXT datei speichern. die verschiedenen sensoren sind über ";" getrennt. soweit ich das sehen kann ist das programm zum einlesen nen ganz einfacher Hyperterminal oder die das ding für den Com heist. kann ich den auch über VB ansteuern? so müßte man nicht erst das eine prgramm starten sondern würd alles über die .xls datei laufen. ist aber nicht das eigendlich problem. 

Ich möchte nun diese TXT datei öffen. bisher hab  ich das so gelöst das ich mit excel eine makro aufgezeichnet habe. ich hab dann einfach den code davon kopiert und mir auf den "einlesen" button gelegt. funkt auch wundernbar. gibt da nur ein problem. das erste ist das excel nun änderungen in dieser datei speichert und das als TXT datei. ich möchte aber eine xls haben und die TXT datei soll nicht verändert werden. auch ist das problem das sich die TXT ja immer an dem gleichen ort befinden muss. schleppt man das gerät also an einen anderen rechner, muss man erst die TXT in einen ordner packen der an der gleichen stellen im LW ist und der name der TXT muss auch der gleiche sein. kann ich nicht wie in Excel quasi einen fenster öffnen lassen in dem ich mir die datei selber suchen kann? 
noch ein problem: aus den daten möchte ich ein diagramm machen. wenn ich das mit meinem makro trick mache sind ja die Zeile und Spalten fest definiert. wie kann ich dem sagen das er das ende Selber findet? 

ja, viele fragen. ich weiß nur nicht so ganz wie ich da ran gehen soll. bin schon froh überhaubt so weit gekommen zu sein. 

thanks schonmal 

The Brain


----------



## CSANecromancer (7. September 2006)

Ich schätze mal, daß dein Problem gar nicht so kompliziert ist, aber da dein Text aussieht, als wäre er geschrieben nach dem Motto "ich schreibe, wie ich will, die anderen sollen sich halt beim Lesen anstrengen, Orthographie ist für Anfänger und Konformisten" handel ich nach dem Motto "ich lese, was ich lesen will - und diesen Text will ich definitiv nicht lesen".

Einfacher ausgedrückt:
Wenn du dein Anliegen in einer saubereren Form schreibst, kann ich es mir evtl. durchlesen und dir drauf antworten.

Und bevor du antwortest mit "Wieso gehst du mich wegen meinem Schreibstil an? Ich kann nichts dafür etc.pp" (was man halt so immer in den Foren liest, wenn jemand wg. eines hingerotzten Postings kritisiert wird):
*Ich* will rein gar nichts von dir, aber *du* willst was von anderen...;-]


----------



## The Brain (7. September 2006)

also: 

ich Lese im moment eine TXT ein sheet ein. das habe ich über eine makrofunktion gemacht die ich vorher aufgezeichnet habe (Datei / öffnen / ort und datei ausgewählt). in den ersten Zeilen der TXT waren uninteressante sache ich auch noch mit der makro gelöscht habe (meine ich zumindest; muss gleich nochmal nachschauen). der Code den der makro dazu aufgezeichnet hat sieht so aus:


```
ChDir "C:\Users\nollehin\Desktop\ALMEMD 5590"
    Workbooks.OpenText Filename:= _
        "C:\Users\nollehin\Desktop\ALMEMD 5590\Temperaturen.TXT", Origin:=932, _
        StartRow:=6, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
        , Space:=False, 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), Array(8, 1), Array(9, 1), _
        Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
        16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), _
        Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array(28, 1), Array( _
        29, 1), Array(30, 1), Array(31, 1), Array(32, 1)), TrailingMinusNumbers:=True
        
        Cells(1) = TextBox1
```

bei Cells(1) = TextBox1 wir auf den klick noch eine typenbezeichnung aus einer Textbox in die erste zelle geschrieben. 

was mich daran stört:

1.
Mein problem an dem code ist das "C:\Users\nollehin\Desktop\ALMEMD 5590\Temperaturen.TXT". hier wird ja explezit geschrieben wo sich diese datei befindet. ich würde das ganze aber gerne so lösen das ich auf den button klicke und sich wie ein Excel bei Datei / öffnen ein fenster öffnet in dem ich mir die Dateil selber suchen kann / muss. 

2.
Die TXT datei wird daruch geöffnet. ich wenn nun meine Daten und diagramme speichern möchte, speichert er diese natürlich in dieser TCT datei. ich würde das gerne so lösen das diese Datei nur eingelesen wird und alles dann in einer xls datei gespeichert wird. 

3. 
Auch habe ich das problem wenn ich nun ein Diagramm daraus machen möchte und ich dieses auch über einen makro mache, sind die zeilen und spalten fest definiert. ich möchte das aber gern so haben das der auswertungsbereich automatisch erkannt wird. der Beginn ist immer an der selben stelle, jedoch das ende richtet sich nach der anzahl der messungen. 

is es so besser


----------



## CSANecromancer (7. September 2006)

The Brain hat gesagt.:
			
		

> is es so besser


Naja, die Orthographie ist zwar noch unter aller Sau, aber immerhin konnte man es jetzt einigermaßen lesen.  

zu 1.: Dafür gibt es die Komponente OpenFileDialog. Die auf deinem Formular ablegen und dann bei der Button-Ereignisbehandlung aufrufen. Der ausgewählte Filename wird dann zurückgegeben, bzw. in der Komponente gespeichert. In der Hilfe steht das alles genauestens drin. Nicht vergessen: Die Komponente sollte richtig konfiguriert sein (Filefilter etc.)

zu 2.: Eine 20sekündige Suche nach XML über den Filter Visual Basic in der MS-Hilfe hat mir eine Linkliste mit ca. 30 Links gegeben. Ich denke, da wirst du sicher das finden, was du brauchst.

zu 3.: Da ich nicht weiß, mit was für Macros du arbeitest, ist es etwas schwieriger. Aber rein von der Logik her würde ich einfach so ein Diagramm automatisch erstellen lassen und dann die erste Datenzeile auf Inhalt abtasten. So könnte ich dann vom Programm aus die Bemaßung feststellen und danach einen entsprechenden Cut auf das Diagramm anwenden.

Hoffe, das hat wenigstens ein klitzekleines bißchen geholfen. Ich bin leider nicht so der VB-Crack.


----------



## The Brain (7. September 2006)

> Ich bin leider nicht so der VB-Crack.



ne je is klar... und das sagt du mir jetzt  ich hab damals in der FOS nen taschenrechner mit VB programmieren müssen und das war es auch schon. drum sind sachen wie


> Eine 20sekündige Suche nach XML über den Filter Visual Basic in der MS-Hilfe hat mir eine Linkliste mit ca. 30 Links gegeben. Ich denke, da wirst du sicher das finden, was du brauchst.


nicht wirklich hilfreich. glaub ma, die suche hab ich auch schon benutzt aber wenn da was erklärt wird, werden meist 5 sachen genannt mit denen ich nicht klar komme 

naja, dennoch danke für den "versuch"


----------



## CSANecromancer (7. September 2006)

The Brain hat gesagt.:
			
		

> ne je is klar... und das sagt du mir jetzt  ich hab damals in der FOS nen taschenrechner mit VB programmieren müssen und das war es auch schon.


War bei mir bisher auch nicht viel mehr, eher weniger mit VBA.



			
				The Brain hat gesagt.:
			
		

> drum sind sachen wie nicht wirklich hilfreich. glaub ma, die suche hab ich auch schon benutzt aber wenn da was erklärt wird, werden meist 5 sachen genannt mit denen ich nicht klar komme


Geht mir mit der MS Hilfe genauso. Nur daß ich dann nicht gleich die Flinte in's Korn werfe, sondern versuche zu verstehen, was da geschrieben steht und unbekannte Begriff nachschlage/nachgoogle.

Aber ok, 4 Links weiter (so auf Anhieb sagt mir dieses ganze XMLStreamDataSetWriterLetTheWorldExplode-Zeug auch nichts) stieß ich in der MS Hilfe auf den Begriff "XMLWriter Class". Auf der Seite zu diesem Begriff sind dermaßen viele Beispiele, wenn du damit auch nicht klar kommst, dann kann ich dir wirklich nicht mehr weiterhelfen. Also ich selber würde mir jetzt anhand dieser Hilfeseite auch ohne exzessive VB-Erfahrung zutrauen, mehr oder weniger (eher weniger...) schnell ein kleines Programm zusammenzufrickeln, welches den Inhalt eines Textfeldes im XMLFormat auf Platte schreibt.


----------



## Nirraven (7. September 2006)

The Brain hat gesagt.:
			
		

> was mich daran stört:
> 
> 1.
> Mein problem an dem code ist das "C:\Users\nollehin\Desktop\ALMEMD 5590\Temperaturen.TXT". hier wird ja explezit geschrieben wo sich diese datei befindet. ich würde das ganze aber gerne so lösen das ich auf den button klicke und sich wie ein Excel bei Datei / öffnen ein fenster öffnet in dem ich mir die Dateil selber suchen kann / muss.
> ...



Necro hat rech mit dem FileDialog. In die Hilfe schauen hilft da wirklich weiter.
Die Funktion sieht dann etwa so aus.


```
Public Function GetFolderName()
    Dim oFileDialog As FileDialog
    Set oFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    With oFileDialog
        .Title = "Wählen Sie bitte den gewünschten Ordner aus!"
        .ButtonName = "auswählen"
        .Show
        For Each vrtselecteditem In .SelectedItems
            GetFolderName = vrtselecteditem & "\"
        Next

    End With
End Function
```

Und Speichern klappt z.B. unter Excel mit

ActiveWorkbook.SaveCopyAs "C:\TEMP\XXXX.XLS"

ganz gut.


----------



## CSANecromancer (7. September 2006)

Nirraven hat gesagt.:
			
		

> Und Speichern klappt z.B. unter Excel mit
> 
> ActiveWorkbook.SaveCopyAs "C:\TEMP\XXXX.XLS"
> 
> ganz gut.


UAAAH! Schlagt mich mit der Printversion der MS Hilfe bucklig!
Mea culpa, maxima mea culpa. Ich habe das die ganze Zeit falsch verstanden und dachte, du willst im XLM-Format speichern! Daß dabei ein Excel Sheet gemeint ist, habe ich gar nicht überrissen... 

Nachtrag:
Jau, beim zweiten und dritten Überlesen des ursprünglichen Posts erschließt sich mir der Sinn: Die Textdatei soll als .txt eingelesen und als .xls gespeichert werden. 

100%ige Blindheit meinerseits.


----------



## The Brain (7. September 2006)

Thanks Nirraven!

klappt soweit ganz gut nur noch nicht so ganz. wenn ich jetzt auf meinen Button "Daten Einlesen" klicke, öffnet sich das Browserfenster. leider kann ich nur irgendwie keine Datein sehen. ich kann in den ordner gehen, aber ist wie gesagt kein datei zu zu sehen. ich hab eben irgendwo in der such was von filter gelesen der dann nur TXT usw je nach wunsch anzeigt. ich find das aber ums verrecken nicht wieder. :suspekt:

edit: wieder einen schritt weiter. ich hab einfach bei "Set oFileDialog = Application.FileDialog(msoFileDialogFolderPicker)" das "FolderPicker" wech gemacht und durch "Open" ersetzt. jetzt muss ich nur hin bekommen das er die TXT datei nimmt, ausliest, die trennung der mit den ; beachtet und das in einem ebenso gewählten ordner als xls speicher . dann noch die programmierung mit dem com port... also eigendlich ist schon praxissemster mehr sondern ne diploamarbeit wenn ich so sehe was da noch alles kommt


----------



## The Brain (8. September 2006)

hi!

so! 
datei in datei öffnen und selber suchen geht.
Datei aufbereiten und ";" als neue Spalte erkennen geht
Datei benennen und als xls speichern geht auch. 

genau hier möchte ich aber noch was ändern, was aber nicht klappt. am anfang des programmes muss der benutzer die Typenbezeichnung des Teiles eingeben von dem die messwerte stammen. ich möchte nun beim speichern das genau diese Bezeichnung von allein in dem Fenster steht das sonst leer bleibt und diese erst noch selber eingeben muss. das die bezeichnung als Titel des SaveFensters genommen wird ist kein problem. wie mach ich das aber das er qasi als ersten vorschlag die typenbezeichnung übernimmt?


----------

