Im Internet gibt es sehr viele Seiten, die sich nur auf eine oder zwei VBA Problemlösungen beschränken. Dieser Artikel befasst sich mit einem Kompletten VBA Projekt.

Grundlegender Aufbau des VBA Projekts:

Als erstes legen wir die Anforderung, also den Aufgabenbereich fest. Was soll das Projekt können, was wollen wir erreichen.

Teil-1 (dieser Artikel)

  • Anlegen einer *.xlsm Datei
  • Anlegen entsprechender Module im VBA Editor
  • Existenz der auszulesenden Datei überprüfen

 

Teil-2 (im nächsten Artikel)

  • Auslesen von Textdateien (ASCII-Dateien)
  • Verarbeiten der Daten
  • Ausgeben der Ergebnisse

 

Anlegen einer *.xlsm Datei

Für unser kleines Projekt habe ich im Pfad c:\test\reports\ eine Exceldatei angelegt, die report.xlsm heisst. Innerhalb dieser report.xlsm werden alle notwendigen Module und Prozeduren (Subs und Functions) angelegt.
vba_projekt_pfadstruktur

Anlegen entsprechender Module im VBA Editor

Ich gehe davon aus, dass ihr wisst, wie man Module im Excel VBE (Visual Basic Editor) anlegt.
Wenn nicht, hier eine

Kurzanleitung:
ALT + F11, um den Visual Basic-Editor unter Windows zu öffnen (FN + ALT + F11 auf einem Mac)
Klicken Einfügen ==> Modul. Ein Fenster öffnet sich für ein neues Modul wird auf der rechten Seite des Visual Basic Editors angezeigt.
insert modul in vba editor

Als erstes bietet es sich an ein Modul zu erstellen, das NUR öffentliche Variablen enthält, damit diese Variablen, in ALLEN Modulen des gesamten Projekts zur Verfügung stehen. Um die Übersicht zu behalten, erzeugt man diese in einem separaten Modul, wir können es “Declarations” nennen.
vba_editor_declarations
Inhalt des Moduls “Declarations”:

'Der Pfad zur Reportdatei
Public Const sPathReport = "c:\test\reports\"

Es ist eine gute programmiertechnische Vorgehensweise, den Anfangsbuchstaben einer Variablen, mit dem Anfangsbuchstaben seiner “Bestimmung” zu kennzeichnen, damit man schon am Namen der Variablen erkennen kann, ob der Inhalt ein String oder eventuell eine Ganzzahl ist.
Einer Stringvariable wird ein kleines s vorangestellt.
Einer Integer-Variablen ein kleines i.
Einer Variant-Variablen ein kleines v usw….
Es ist sehr praktisch, wenn der Variablenname “sprechend” ist, damit man den Programmablauf besser “lesen” kann. Aber das kann natürlich jeder für sich selbst bestimmen.
Die Wahl hier eine Konstante zu erzeugen ist insofern praktisch, um 100% auszuschließen, dass diese Variable innerhalb des Programms verändert werden kann. Das sollte ja bei einem Pfad auch so sein.

Existenz der auszulesenden Datei überprüfen

Ihr müsstet eure Pfadstruktur im Modul “Declarations” anpassen.
Wir sollten auch eine Abfrage einbauen, um die Existenz der Textdateien zu verifizieren. Nichts ist störender, als wenn der Programmablauf wegen einer fehlenden Datei oder einem nicht erreichbaren Netzwerkpfad unterbrochen wird.
Dazu legen wir ein weiteres Modul an, das wir “Functions” nennen, denn hier kommen alle benötigten Funktionen rein.
Unser Projekt sieht im Moment schon so aus:
vba_projekt_modul_functions

Am Anfang dieses Moduls “Functions” schreiben wir “Option Explicit”. Mit diesem kleinen Code weisen wir den Editor an, uns immer zu “erinnern”, wenn wir eine Variable erzeugen, diese auch vorher zu deklarieren. Das bewahrt uns später vor Rechtschreibfehlern und ungewollten Zuordnungen versehentlich falsch geschriebener Variablen.
Danach schreiben wir unsere erste Funktion, die folgendermaßen aussieht.

Option Explicit
Function getFileExistFSO(pathFile As String) As Boolean
 
    Dim bFileExists As Boolean
    Dim oFSO As Object
    Set oFSO = CreateObject("Scripting.FileSystemObject")
 
    Select Case oFSO.FileExists(LCase(pathFile))
        Case True: bFileExists = True
        Case False: bFileExists = False
    End Select
    getFileExistFSO = bFileExists
 
End Function

Diese Funktion nutzt das Scripting Filesystemobject um die Existenz von Dateien zu bestätigen. Es gibt noch weitere unterschiedliche Ansätze, die ich später hier hinzufügen werde.

Im nächsten Artikel kümmern wir uns um das Auslesen-Verarbeiten-Ausgeben von Informationen aus diesen Dateien.

Datenschutz
, Besitzer: (Firmensitz: Deutschland), verarbeitet zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in der Datenschutzerklärung.
Datenschutz
, Besitzer: (Firmensitz: Deutschland), verarbeitet zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in der Datenschutzerklärung.