Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 3/2015.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Dateizugriffsklasse

Diese Anforderung kommt bei mir immer wieder vor: Ich möchte per VBA eine Textdatei erstellen oder die Inhalte einer Textdatei einlesen. Dummerweise kann ich mir die genauen Befehle für die verschiedenen Anwendungsfälle einfach nicht merken: Datei in einem Zug einlesen, Datei zeilenweise einlesen und so weiter. Jetzt ist es so weit: Ich baue mir eine Klasse, die alle benötigten Befehle enthält und bereitstellt. Die brauche ich dann nur noch in die jeweilige Datenbank einzufügen und kann nach Lust und Laune auf Text- und andere Dateien zugreifen.

Eigentlich könnte man die Funktionen auch in einem Standardmodul unterbringen. Ich finde allerdings die Möglichkeit praktisch, eine Klasse zu erstellen, die gleich beim Start der Anwendung ihre Eigenschaften, Methoden und Funktionen bereitstellt, ohne dass ich sie erst noch instanzieren muss. Dazu sind zwar zusätzliche kleine Handgriffe nötig, aber das nehme ich in Kauf.

Im vorliegenden Beitrag füge ich die Methoden zur Klasse hinzu, die ich am häufigsten benötige. Das schließt aber nicht aus, dass nicht in nächster Zeit noch Erweiterungen folgen. Haben Sie selbst Ideen dazu, teilen Sie mir diese ruhig unter info@access-im-unternehmen.de mit!

Klasse erstellen

Als Erstes legen Sie ein neues Klassenmodul im VBA-Editor einer neuen, leeren Datenbank an. Dazu verwenden Sie den Menüeintrag Einfügen|Klassenmodul. Dieses speichern Sie gleich im Anschluss unter dem Namen FileAccess. In diesem Fall lassen wir das Präfix cls weg, weil wir die Klasse wie ein eingebautes Objekt nutzen wollen – da stört das Präfix nur. Diese Klasse exportieren Sie dann mit der folgenden Anweisung in eine Textdatei:

SaveAsText acModule, "FileAccess",  CurrentProject.Path & "\FileAccess.txt"

Nun öffnen Sie das gespeicherte Klassenmodul mit einem Texteditor und ändern die nachfolgend fett gedruckten Zeilen wie angegeben ab:

Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Compare Database
Option Explicit

Danach speichern Sie den neuen Stand des Klassenmoduls in der Textdatei und lesen dieses wieder in das VBA-Projekt ein:

LoadFromText acModule, "FileAccess",  CurrentProject.Path & "\FileAccess.txt

Legen Sie dann eine erste Funktion mit folgendem Inhalt an:

Public Function SaveTextAsFile(strText As String,  strFile As String)
End Function

Diese Funktion können Sie nun direkt über die Eingabe des Klassennamens ansprechen, wie auch Bild 1 zeigt:

Direkter Aufruf der Funktion per Intellisense

Bild 1: Direkter Aufruf der Funktion per Intellisense

FileAccess.SaveTextAsFile

Text in Datei speichern

Damit brauchen wir nun nur noch die gewünschten Funktionen hinzuzufügen. Den Start haben wir ja schon gemacht. Die Funktion SaveTextAsFile soll mit den beiden Parametern den zu speichernden Text sowie den Dateinamen entgegennehmen. Diese Funktion sieht nun wie folgt aus:

Public Function SaveTextAsFile(strFile As String,  strText As String) As Boolean
     Dim lngFile As Long
     lngFile = FreeFile
     Open strFile For Output As #lngFile
     Print #lngFile, strText
     Close #lngFile
     SaveTextAsFile = True
End Function

Sie ermittelt mit FreeFile zunächst eine noch nicht verwendete Dateinummer und speichert diese in der Variablen lngFile. Diese nutzt sie, um eine neue Datei zu erstellen und diese für den Schreibzugriff vorzubereiten. Dann trägt sie mit der Print-Methode den kompletten Inhalt der Varialben strText in die Datei ein. Danach schließt sie die Datei und gibt den Wert True als Funktionsergebnis auf die aufrufende Instanz zurück. Der folgende Beispielaufruf erzeugt eine Datei namens test.txt und trägt dort zwei Zeilen mit den Texten bla und blub ein:

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.