Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Excel VBA für Profis: Klassen (Konzepte)

CSV-Import ohne Klasse

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Eine gewöhnliche Funktion liest aus einer vorgegebenen Textdatei den ersten Datensatz aus.

Transkript

Bevor wir per VBA auf die Daten zugreifen, will ich sie Ihnen wenigstens kurz zeigen. Das ist die CSV-Datei, da steht also hier eine Liste von Überschriften, Feldnamen, Titeln oder wie immer Sie das sehen wollen, mit Semikolon getrennt und es gibt vier Datensätze und damit wir die auch unterscheiden können, weil die ja sehr ähnlich sind, hat der vierte Datensatz hier so was wie "CSVstadt" und der Nachname ist entsprechend CSV. Das ist die eine Datenquelle, sozusagen die leichte und dieses ist eine etwas kompliziertere, die muss ich etwas schmaler machen, aber er wird genug zu sehen sein, eine Access-Datenbank, die eine tbl-Adressen besitzt, in der sind ebenfalls vier Datensätze drin, die sind sich natürlich jetzt relativ ähnlich, und hier die vierte Adresse ist dann Anna Access in Accessing. Also die können wir zur Not unterscheiden und ich möchte auf einen Datensatz jeweils diese oder jene Datenquelle zugreifen können. Und das soll also jetzt, ich werde die Beiden mal schließen, innerhalb der VBA-Programmierung funktionieren, ohne dass ich mich nachher mit den Details beschäftigen muss. Und normalerweise das ist technisch kein Unterschied, ob ich es in dem Modul oder im Klassenmodul machen würde, normalerweise kommt dabei so ein Code wie dieser, in einem normalen Modul zum Einsatz, zum Beispiel eine Function, die nennen wir mal "Erste Zeile aus CSV", die gibt einen String zurück und die werden wir weitestgehend recyclen können in dieser jeweiligen Klasse und da brauche ich eine Variable für die Zeile, denn die CSV-Datei wird zeilenweise eingelesen, ich werde diese ausnahmensweise nicht in String machen, sondern "varZeile" als Variant. Das hat nämlich den Vorteil, dass ich die Zeile später direkt zerlegen kann. Sie haben gesehen, die ist mit Semikolon getrennt und diese Glitt-Funktion erlaubt es dann direkt an der Stelle einzugreifen. dann gibt es zusätzlich ein "Dim strZeile" da ist eine Leerzeile zu viel, da hole ich erstmal, was da kommt, also "As String" und dann brauche ich noch eine Variable für den sogenannten Kanal, "Dim lngKanal As Long", denn der Zugriff auf diese Textdatei erfolgt über sogenannte Kanäle. Diese Nummer wird meistens direkt mit "1" vorbesetzt, anständigerweise sollte man da die Funktion "FreeFile" aufrufen und dann öffne ich mit diesem Wissen diese Textdatei, also ich frage mal, wo diese Arbeitsmappe Ihren Pfad hat, weil ich meine Datei dort genau hingelegt habe, und dann muss ich nur noch wissen, wie sie heißt, ich habe sie "Z&T" für Zellen und Tabellen, "_2016_Adressen.csv" genannt, und "For Input", ich will sie also einlesen, "Als#lngKanal". Damit ist sie jetzt geöffnet und mit "Input" kriege ich zeilenweise Inhalte, wenn ich jetzt nämlich sage in welcher Nummer ich was auslesen will, und es wird in dieser Variable-strZeile eingelesen. Und hier kann ich schon mal dazuschreiben "Titelzeile überspringen", denn die Titelzeile waren die Feldnamen, die will ich gar nicht haben. Ich werde diesen Befehl direkt jetzt wiederholen, das ist die erste Zeile. Und wenn ich das in einer Schleife machen würde und könnte ich das jetzt zeilenweise einlesen, aber ich mache das jetzt einfach erstmal für die erste Zeile. Jeder Input-Befehl liest den Inhalt der jeweiligen Textzeile in die strZeile-variable. Und die zerlege ich jetzt, "varZeile" ist ein Variant-Datentyp, deswegen kann ich mit der Split-Funktion direkt strZeile auslesen und als Trennzeichen dieses Semikolon angeben, dann kriege ich ein Array zurück, wo ich dann sagen kann, ich hätte gern das erste, zweite, dritte oder wievielte Element auch immer. Und die erste Zeile aus CSV kann ich jetzt direkt beschreiben, das ist "varZeile (4)", das ist der Nachname und dann, da können wir jetzt einfach in dieses Array hineingreifen, mal gucken was kommt, dann möchte ich einen Zeilenumbruch haben, "vbCrLf" macht einen Zeilenumbruch, diese Konstruktion "Leerzeichen, Unterstrich, Return" macht einen Nicht-Zeilenumbruch sozusagen, der Compiler sieht diese beiden geschriebenen Zeilen als eine, nämlich varZeile die Nummer 3, das wird jetzt einfach die Adresse, "vbCrLf" ist wieder ein Umbruch, wiederum verkettet, ab in einer neuen Zeile, das ist jetzt reine Optik, "varZeile(1)" und das ist Postleitzahl und Ort, "varZeile(2)". Die stehen einfach dort in der anderen Reihenfolge und anständigerweise sollte man diesen Kanal dann auch noch schließen. Und das könnte ich jetzt erstmal testen, ich habe hier eine Function geschrieben, also "TesteZugriff" und dann steht jetzt entsprechend "debug.Print" und die Function "ErsteZeileAusCSV" gibt mir zurück, was in der ersten Zeile steht. Ich schreibe nochmal davor, dass das jetzt CSV ist, denn die werden sich nachher sehr ähnlich sehen, und dann schauen wir mal, ob das schon funktioniert. Das ist sozusagen der minimalste Zugriff auf eine Textdatei. Und dann kann ich das hier testen mit F5 und Sie sehen, da müssen wir jetzt ein bisschen schieben, da ist Nachname, Vorname, Adresse mit Postleitzahl und Ort. Das hat also funktioniert, von außen habe ich nur diese Function und so eine ähnliche werde ich mir auch in Access bauen.

Excel VBA für Profis: Klassen (Konzepte)

Verbessern Sie Ihren VBA-Code durch Klassenprogrammierung.

1 Std. 35 min (21 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

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!