Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Excel 2016 VBA für Profis

Textdatei lesen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Textdateien lassen sich mit VBA zeilenweise in Variablen importieren, die Sie anschließend nach Belieben weiterverarbeiten können.

Transkript

Sie können natürlich nicht nur Daten von Excel in eine Text-Datei schreiben, sondern auch umgekehrt eine Text-Datei auslesen. Da habe ich jetzt mal eine völlig beliebige erstellt. Das ist der Anfang von Caesars "De Bello Gallico". Und zwar sieht es jetzt hier in einer Text-Datei etwas ungewohnt aus. Es sind nämlich sehr, sehr lange Zeilen. Erst wenn ich das Format umstelle auf Zeilenumbruch, sehen Sie, das verhält sich sozusagen ein bisschen wie Absätze. Wir können auch mal eine Leerzeile dazwischen machen. Also hier, das was Sie jetzt als Absatz sehen, ist im Grunde eine einzige Zeile und wird nur durch dieses Format ein bisschen in Absatzform gezwungen. Jeweils hier nach dem Punkt habe ich einen neuen Absatz angefangen. Das sieht man im Text-Editor nicht so gut. Und das können wir jetzt "Speichern" und schließen. Und diese Datei will ich einlesen. Also mit "Alt+F11" erstmal wieder in den Editor. Und kann mir jetzt hier eine neue Prozedur machen, also "Sub TextImportieren()" Die wird sehr viele Teile von dem hier auch brauchen. Genau gesagt, werden wir diese drei Zeilen einfach so rüberkopieren können. Also, da heißt es fast identisch, statt "Output" dann einfach "Input". Und die Datei habe ich jetzt "DeBelloGallico" genannt, mit dem "Z&T" davor. Also, "\Z&T_DeBelloGallico.txt". Und damit sind die beiden Teile hier schon sowie hier exportiert. Trotzdem gibt es natürlich ein paar Unterschiede. Allen voran, dass ich nicht vorher weiß, wie viele Objekte kommen. Hier weiß ich es. Deswegen kann ich eine "For-Next-Schleife" nehmen, weil die "Cells"-Auflistung aufzählbar ist. Ich nehme zwar eine "For-Each-Next", aber trotzdem ist es eine begrenzte Menge. Von der Text-Datei weiß ich das nicht und ich kann es auch nicht erfragen. Ich müsste tatsächlich die gesamte Text-Datei einmal durchlesen, Zeilen zählen, mit einem Zähler mitzählen, damit ich weiß, wie viel Zeilen drin sind. Das ist natürlich Quatsch. Ich werde die beim durchlesen, direkt importieren. Und deswegen brauche ich jetzt diese unbegrenzte Schleife "Do Loop". Also, "do until", nämlich bis zum Ende der Datei. Das heißt auf Englisch "end of file". "EOF" ist eine "Function", der ich jetzt diesen Kanal, "lngKanal", übergebe. Und entsprechend braucht es hier einen "Loop". Damit ich es nicht vergesse, kann ich schon mal "Close lngKanal" reinschreiben. Und mit jeder Zeile bis zum Ende der Datei kommt jetzt das Gegenstück, was hier "Print" heißt, heißt dort "Input". Und dann entsprechend "lngKanal", damit klar ist, woraus ich den "Input" hole. Und jetzt kommt eine Variable, die ich allerdings noch gar nicht besitze. Die muss da oben erstmal nachbessern. Ich brauche eine String-Variable, weil in diese was reingeschrieben wird. Das ist der eher seltene Fall von Rückgabeparametern. Also, hier die Variable "strZeile" ist leer. Und wenn die Input-Prozedur gelaufen ist, hat die da was reingeschrieben. Also, es wird sozusagen, von innen nach außen etwas geholt. Damit wir schon mal sehen, ohne viel Mühe, dass es funktioniert, mache ich ein einfaches "Debug.Print". Und da diese Zeilen sehr lang sind, will ich nur davon, sagen wir mal, die ersten 30 Buchstaben haben. Das heißt, "strZeile, 30". Die "Left"-Funktion schneidet das entsprechend ab. Ich muss natürlich mit "Ansicht Direktfenster" dann auch das sichtbar machen, was dann in "Debug.Print" erzeugt wird. Jetzt können wir erstmal probieren, einmal "Debuggen Kompilieren" und mit F5 laufen lassen. Und Sie sehen auf Anhieb, hat funktioniert. Da ist jetzt relativ viel erschienen. Also, hier jeweils, Anfang der Zeile. Und das soll jetzt in Excel reingeschrieben werden. Wir können das da unten mal wieder wegmachen und das hier kommentieren. Das ist immer ein schöner, schneller Test. Der eigentliche Import funktioniert schon. Jetzt geht’s nur drum, das in Excel noch irgendwie vernünftig hinzuschreiben. Dann schauen wir doch mal, wo Platz ist. Ich könnte das hier reinschreiben, denn ich werde in Zellen untereinander schreiben. Wenn wir weniger riskieren wollen, dann werde ich hier einfach mal ein neues Blatt anlegen. Und das werde ich schonmal... -- Nein, wo haben wir es? -- Da! Ich schiebe das mal nach hinten. Das werde ich direkt per Doppelklick umbenennen. Das kann einfach "Caesar" heißen. Wenn Sie jetzt mit "Alt+F11" im Editor nachgucken, hier ist das neue Blatt "Caesar". Das ist der Name nach außen, der, den der Benutzer sieht. Ärgerlicherweise hat es beides die Eigenschaft "Name". Das Ding hier oben heißt eigentlich "Codename". Das ist der Objektname dieser Tabelle, die meistens so heißt, wenn es jedenfalls nicht umbenannt worden ist, wie das, was der Benutzer sieht. Aber es ist nicht nur möglich das umzubenennen, sondern sinnvoll. Ich werde es also jetzt "tabCaesar" nennen. Ich hätte es auch direkt "Caesar" nennen können. Aber ich nenne ungarisch notiert immer in dem Präfix den Datentyp. Und in diesem Fall ist der Datentyp eine Tabelle. Ich könnte es auch "wks" nennen. Aber, ich unterscheide das gerne von meinen internen Variablen in VBA. Das ist also der Objektname der Tabelle, für die der Benutzer den Namen "Caesar" sieht. Die heißt bei mir "tabCaesar". Und dann brauche ich noch einen Zähler, damit ich zeilenweise runtergehen kann. Also "Dim lngZeile" nenne ich das mal, "As Long". Und kann jetzt hier... -- vielleicht sollten wir ihn vorher auch auf 1 stellen -- Also, "lngZeile = 1". Und nachdem ich geschrieben habe, werde ich "lngZeile = lngZeile+1", den also um eins erhöhen. Und dazwischen zählt er jetzt brav mit. 1,2,3,4, je nachdem in welcher Zeile ich bin. Und da kann ich jetzt direkt drauf zugreifen. "tabCaesar.Cells", daran merken Sie schon, das ist ein Objekt, hat eine "Cells"-Auflistung, welche erstens die Zeile, zweitens die Spalte wissen möchte. Die Zeile ist das, was ich in "lngZeile" mitzähle. Und Komma. Die Spalte, der "ColumnIndex", bleibt immer auf 1. Das ist eine eins-basierte Auflistung. Die erste Spalte hat auch wirklich mal die Nummer 1. Und davon will ich den ".value" füllen. Das ist also im ersten Fall die Zelle A1, dann A2, A3 und so weiter. Und das ist, wie eben schon mal geschrieben. Das können wir auch runterkopieren. Die ersten 30 Zeichen von dieser Text-Datei. Und dann gucken wir mal. Spätestens jetzt sollte man vorher speichern. Wenn es schief geht, können Sie noch ungespeichert raus. Mit "Debuggen Kompilieren", "tabCaesar" ist hoffentlich leer. Einmal F5 ganz mutig. Und mit "Alt+F11" gucken wir mal nach. Da ist genau das Gleiche angekommen und schön untereinander geschrieben. Das heißt, ich kann ohne viel Mühe... -- wir können nochmal in den Code wechseln -- eigentlich wie beim Exportieren importieren. Nur, es ist keine "For-Next-Schleife", weil ich nicht weiß, wie viele da drin sind, sondern eine "Do-Loop-Schleife" bis zum Ende. Und der Input-Befehl holt jeweils die nächsten Zeilen. Und damit haben Sie dann die Möglichkeit, die Daten entweder ganz platt irgendwo zu analysieren oder in das "Debugfenster" zu schreiben, oder mit dieser Technik hier zeilenweise untereinander.

Excel 2016 VBA für Profis

Nutzen Sie die Möglichkeiten der Programmiersprache VBA in Excel 2016, um eigene Dialoge zu erstellen, auf andere Arbeitsmappen zuzugreifen und wichtige Funktionen einzusetzen.

5 Std. 52 min (55 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.01.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!