62
Leseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente, API-Funktionen u. v. m. In diesem Buchauszug machen Sie sich mit der objektorien- tierten Programmierung vertraut und erfahren, wie Sie mit API- Abrufen typische Aufgaben in Access erledigen können. Bernd Held VBA mit Access – Das umfassende Handbuch 800 Seiten, gebunden, 2. Auflage 2016 49,90 Euro, ISBN 978-3-8362-4286-8 www.rheinwerk-verlag.de/4209 »Ein Streifzug in die Welt der Objekte« »API-Funktionen einsetzen« Inhaltsverzeichnis Index Der Autor Leseprobe weiterempfehlen Wissen, wie’s geht.

VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Embed Size (px)

Citation preview

Page 1: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

LeseprobeDieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente, API-Funktionen u. v. m. In diesem Buchauszug machen Sie sich mit der objektorien-tierten Programmierung vertraut und erfahren, wie Sie mit API- Abrufen typische Aufgaben in Access erledigen können.

Bernd Held

VBA mit Access – Das umfassende Handbuch800 Seiten, gebunden, 2. Auflage 2016 49,90 Euro, ISBN 978-3-8362-4286-8

www.rheinwerk-verlag.de/4209

»Ein Streifzug in die Welt der Objekte« »API-Funktionen einsetzen«

Inhaltsverzeichnis

Index

Der Autor

Leseprobe weiterempfehlen

Wissen, wie’s geht.

Page 2: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

195

4

Kapitel 4

Ein Streifzug in die Welt der Objekte

In diesem Kapitel werde ich die wichtigsten und interessantesten

Objekte von Access und VBA behandeln. Jedes Objekt in Access hat

bestimmte Methoden und Eigenschaften, die genau für dieses Objekt

ausgeführt werden können.

Unter anderem werde ich in diesem Kapitel folgende Fragen beantworten:

� Wie zeige ich Informationen zu meiner Datenbank an?

� Wie beende ich Datenbanken sowie die Applikation?

� Wie greife ich mit Funktionen auf Tabellen zu?

� Welche Drucker sind installiert, und wie heißen sie?

� Welche Tabellen, Berichte und Formulare befinden sich in der Datenbank?

� Wie rufe ich Berichte und Formulare in Access auf?

� Wie führe ich einen Datentransfer nach Excel durch?

� Welche Möglichkeiten habe ich, auf integrierte Dialoge in Access zuzugreifen?

In der Entwicklungsumgebung sehen Sie die Methoden und Eigenschaften sofort,

wenn Sie ein Objekt eingeben und danach einen Punkt setzen. Dann erscheint näm-

lich prompt ein Kontextmenü, das die zur Verfügung stehenden Methoden und

Eigenschaften anzeigt.

Alle Prozeduren und Funktionen aus diesem Kapitel finden Sie in den Materialien

zum Buch im Verzeichnis Kap04 unter dem Namen Objekte.accdb.

4.1 Das »Application«-Objekt

Das Application-Objekt steht auf oberster Ebene. Es bezieht sich auf die aktive Micro-

soft-Access-Anwendung und enthält alle darunterliegenden Objekte, wie Formulare,

Reports, Drucker und Bildschirm.

4286-8.book Seite 195 Dienstag, 6. Dezember 2016 9:52 09

Page 3: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

196

4.1.1 Datenbankinformationen erhalten

Anhand des Application-Objekts können Sie einiges über Ihre Access-Umgebung

erfahren, indem Sie verschiedene Methoden anwenden. Listing 4.1 gibt den Namen

der Datenbank wieder.

Sub AccessDBErmitteln()

MsgBox "Die aktuelle Datenbank heißt: " & _Application.CurrentProject.Name

End Sub

Listing 4.1 Den Namen der Datenbank ermitteln

Die Eigenschaft Name gibt den Namen des Objekts CurrentProject bekannt.

Möchten Sie nicht nur den Namen der aktuell geöffneten Datenbank angezeigt be-

kommen, sondern auch den kompletten Speicherpfad, so starten Sie die Prozedur

aus Listing 4.2:

Sub AccessDBMitPfadErmitteln()

MsgBox "Die aktuelle Datenbank heißt: " & _Application.CurrentDb.Name

End Sub

Listing 4.2 Namen und Speicherort der Datenbank ermitteln (Variante 1)

Die CurrentDb-Methode gibt eine Objektvariable des Typs Database zurück, die der

Datenbank entspricht, die momentan im Microsoft-Access-Fenster geöffnet ist.

Alternativ zu der letzten Prozedur können Sie Listing 4.3 einsetzen, um den Pfad der

aktuell geöffneten Datenbank auszugeben:

Sub AccessDBMitPfadErmitteln2()

MsgBox "Die aktuelle Datenbank heißt: " & _Application.CurrentProject.Path

End Sub

Listing 4.3 Namen und Speicherort der Datenbank ermitteln (Variante 2)

Über die Eigenschaft Path, die Sie auf das Objekt CurrentProject anwenden, ermitteln

Sie den Pfad der aktuell geöffneten Datenbank.

4286-8.book Seite 196 Dienstag, 6. Dezember 2016 9:52 09

4.1 Das »Application«-Objekt

197

4

4.1.2 Aktuellen Anwendernamen ermitteln

Mit der Methode CurrentUser geben Sie den Namen des aktuellen Benutzers der

Datenbank zurück.

Sub AktuellerUser()

MsgBox "Der aktuelle Benutzer ist: " & _Application.CurrentUser, vbInformation

End Sub

Listing 4.4 Den aktuellen Benutzer der Datenbank abfragen

Möchten Sie hingegen den aktuell an Windows angemeldeten User abfragen, dann

verwenden Sie folgende Zeile:

MsgBox environ("username")

4.1.3 Installierte Drucker ermitteln

Um zu ermitteln, welche Drucker Sie einsetzen und an welchem Anschluss sie hän-

gen, können Sie das neue Auflistungsobjekt Printers nutzen, das Sie im Zusammen-

spiel mit dem Objekt Application einsetzen. Den dafür notwendigen Code sehen Sie

in Listing 4.5:

Sub DruckerErmitteln()Dim prtDrucker As PrinterDim strDrucker As String

For Each prtDrucker In Application.PrintersWith prtDruckerstrDrucker = strDrucker & vbLf & "Druckername: " & .DeviceName & vbCr _

& "Anschluss: " & .PortEnd With

Next prtDruckerDebug.Print strDrucker

End Sub

Listing 4.5 Alle installierten Drucker auslesen

Die Eigenschaft DeviceName zeigt den Druckernamen an. Über die Eigenschaft Port

zeigen Sie den Anschluss an, an dem Ihr Drucker hängt.

4286-8.book Seite 197 Dienstag, 6. Dezember 2016 9:52 09

Page 4: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

198

Abbildung 4.1 Alle im System bekannten Drucker werden ermittelt und ausgegeben.

4.1.4 Datenbank schließen

Soll die aktuelle Datenbank geschlossen werden, dann können Sie für diese Aufgabe

die Methode CloseCurrentDatabase einsetzen.

Sub AktuelleDBschließen()

Application.CloseCurrentDatabase

End Sub

Listing 4.6 Access-Datenbank schließen

4.1.5 Access beenden

Die Methode Quit dient zum Beenden von Access. Sie können dabei bestimmen, ob

Änderungen angenommen oder verworfen werden sollen. Bei der Prozedur aus Lis-

ting 4.7 wird Access geschlossen. Dabei werden Sie durch eine Meldung aufgefordert,

anzugeben, wie Sie mit den Änderungen umgehen möchten.

Sub AccessBeenden()

Application.Quit acQuitPrompt

End Sub

Listing 4.7 Access beenden

4286-8.book Seite 198 Dienstag, 6. Dezember 2016 9:52 09

4.1 Das »Application«-Objekt

199

4

Um zu bestimmen, was mit den Änderungen an der Datenbank beim Beenden des

Programms geschehen soll, können Sie die acQuit-Option einsetzen. Dabei stehen

Ihnen folgende Konstanten zur Verfügung:

� acQuitPrompt: Beim Schließen Ihrer Datenbank wird ein Meldungsfenster ange-

zeigt, in dem Sie selbst entscheiden müssen, ob Sie Änderungen an der Datenbank

akzeptieren oder verwerfen möchten.

� acQuitSaveAll: Bei dieser Standardeinstellung werden alle geänderten Daten in

der Datenbank automatisch gespeichert, ohne dass eine Rückfrage erfolgt.

� acQuitSaveNone: Bei Verwendung dieser Konstanten wird die Access-Datenbank

geschlossen, wobei keine Änderungen an den Daten übernommen werden.

4.1.6 Aktuelle Access-Version ausgeben

Über die Eigenschaft Version des Objekts Application können Sie herausfinden, wel-

che Access-Version bei Ihnen oder beim Kunden im Einsatz ist.

Die Prozedur aus Listing 4.8 meldet Ihnen die aktuell installierte Access-Version.

Sub AccessVersionAusgeben()MsgBox "Sie arbeiten mit der Access-Version: " _& Application.Version

End Sub

Listing 4.8 Access-Version ermitteln

4.1.7 Formular anlegen

Über das Objekt Application und die Methode CreateForm können Sie ein Formular

anlegen und dabei einen Bezug zu einer in der Datenbank vorhandenen Tabelle her-

stellen. Des Weiteren ist es dabei möglich, das neue Formular auf Basis eines bereits

vorhandenen herzustellen.

Sub NeuesFormularAnlegen()Dim frm As Form

Set frm = Application.CreateForm _(Application.CurrentDb.Name, "Artikel")

DoCmd.Restorefrm.RecordSource = "Artikel"

End Sub

Listing 4.9 Ein neues Formular erstellen

4286-8.book Seite 199 Dienstag, 6. Dezember 2016 9:52 09

Page 5: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

200

Die CreateForm-Methode erstellt ein Formular und gibt ein Form-Objekt zurück. Dabei

lautet die Syntax dieser Methode:

CreateForm([Datenbank[, Formularvorlage]])

Im Argument Datenbank geben Sie den Namen der Datenbank an, die die Formular-

vorlage enthält, mit der Sie Ihr Formular erstellen wollen. Wenn Sie die aktuelle

Datenbank verwenden möchten, geben Sie dieses Argument nicht an bzw. ermitteln

über die Anweisung Application.CurrentDb.Name den Namen der aktiven Datenbank.

Abbildung 4.2 Ein neues Formular wurde auf Basis einer Vorlage erstellt.

Im Argument Formularvorlage geben Sie den Namen des Formulars an, das Sie als

Vorlage zum Erstellen eines neuen Formulars verwenden möchten. Wenn Sie dieses

Argument nicht angeben, legt Microsoft Access dem neuen Formular die Vorlage

zugrunde, die auf der Registerkarte Formulare � Berichte des Dialogfelds Optio-

nen angegeben ist. Sie rufen dieses Dialogfeld auf, indem Sie im Menü Extras auf

Optionen klicken. Bei den Versionen Access 2007, Access 2013 und Access 2016 fin-

den Sie diese Einstellungen bei den Optionen unter Object-Designer im Abschnitt

Entwurfsansicht für Formular/Berichte.

Mit der Methode Restore stellen Sie ein maximiertes oder minimiertes Fenster in sei-

ner vorherigen Größe wieder her. Über die Eigenschaft RecordSource geben Sie an,

woher das neue Formular die Daten nehmen soll, mit denen es verknüpft wird.

4286-8.book Seite 200 Dienstag, 6. Dezember 2016 9:52 09

4.1 Das »Application«-Objekt

201

4

4.1.8 Durchschnitt errechnen

Ebenfalls direkt unterhalb des Application-Objekts liegt die Funktion DAvg. Mit dieser

Funktion ermitteln Sie den Mittelwert beispielsweise aus einer Tabelle. Die Prozedur

aus Listing 4.10 berechnet aus allen Frachtkosten der Tabelle Bestellungen den Durch-

schnitt und gibt ihn auf dem Bildschirm aus.

Sub MittelwertBerechnen()

MsgBox "Die durchschnittlichen Frachtkosten liegen bei" _& vbLf & Format(DAvg("[Frachtkosten]", _"Bestellungen"), "0.00"), vbInformation

End Sub

Listing 4.10 Den Durchschnitt eines Tabellenfeldes berechnen

Die Funktion Format wird hier eingesetzt, um die Ausgabe in das gewünschte Format

zu bringen.

4.1.9 Summen ermitteln

Die Funktion DSum liegt auch direkt unterhalb des Application-Objekts. Mit ihrer Hilfe

ermitteln Sie die Summe eines Feldes beispielsweise aus einer Tabelle. Die folgende

Prozedur ermittelt aus allen Frachtkosten der Tabelle Bestellungen die Summe und

gibt diese auf dem Bildschirm aus.

Sub SummeBerechnen()

MsgBox "Die Summe der Frachtkosten beträgt" _& vbLf & Format(DSum("[Frachtkosten]", _"Bestellungen"), "0,000.00"), vbInformation

End Sub

Listing 4.11 Die Summe eines Tabellenfeldes berechnen

Abbildung 4.3 Die Summe aller Frachtkosten

aus einer geschlossenen Tabelle ermitteln

4286-8.book Seite 201 Dienstag, 6. Dezember 2016 9:52 09

Page 6: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

202

4.1.10 Datensätze zählen

Mit der Funktion DCount ermitteln Sie die Anzahl der Datensätze beispielsweise einer

Tabelle. Die Prozedur aus Listing 4.12 zählt aus der Tabelle Bestellungen die Daten-

sätze und gibt die Anzahl auf dem Bildschirm aus.

Sub SätzeZählen()

MsgBox "Die Anzahl der Datensätze beträgt" _& vbLf & DCount("*", "Bestellungen"), vbInformation

End Sub

Listing 4.12 Die Anzahl aller Datensätze einer Tabelle ermitteln

Sollen die Sätze nur bedingt gezählt werden, dann starten Sie die Prozedur aus Listing

4.13. Dort werden nur Sätze gezählt, bei denen die Frachtkosten bei mehr als 100 Euro

liegen.

Sub SätzeBedingtZählen()

MsgBox "Die Anzahl der Datensätze beträgt" _& vbLf & DCount("Frachtkosten", "Bestellungen", "Frachtkosten>100"), _vbInformation

End Sub

Listing 4.13 Ein zusätzliches Kriterium für eine bedingte Zählung angeben

Das dritte Argument entspricht dem Kriterium, auf Basis dessen gezählt werden soll.

4.1.11 Minimal- und Maximalwerte ermitteln

Mit der Funktionen DMax und DMin ermitteln Sie aus einer Tabelle für ein bestimmtes

Feld den größten bzw. den kleinsten Wert. Die Prozedur aus Listing 4.14 findet in allen

Frachtkosten in der Tabelle Bestellungen den größten bzw. den kleinsten Wert und

gibt ihn auf dem Bildschirm aus.

Sub MinUndMaxBerechnen()

MsgBox "Die höchsten Frachtkosten betragen" & _vbLf & Format(DMax("[Frachtkosten]", _"Bestellungen"), _"0,000.00") & vbLf & vbLf & _"Die niedrigsten Frachtkosten betragen" & _

4286-8.book Seite 202 Dienstag, 6. Dezember 2016 9:52 09

4.2 Das Objekt »AccessObject«

203

4

vbLf & Format(DMin("[Frachtkosten]", _"Bestellungen"), "0.00"), vbInformation

End Sub

Listing 4.14 Die Ausreißerwerte einer Tabelle ermitteln

Abbildung 4.4 Die Extremwerte bei den Frachtkosten ermitteln

4.2 Das Objekt »AccessObject«

Mithilfe des AccessObject-Objekts können Sie auf Auflistungsobjekte zugreifen und

diese auswerten. Dabei stehen Ihnen die Auflistungsobjekte aus Tabelle 4.1 zur Verfü-

gung.

AccessObject Auflistung Enthält Informationen über

Datenzugriffsseite AllDataAccessPages gespeicherte Datenzugriffsseiten

(wird von Access 2007 nicht mehr

unterstützt)

Datenbankdiagramm AllDatabaseDiagrams gespeicherte Datenbank-

diagramme

Form AllForms gespeicherte Formulare

Funktion AllFunctions gespeicherte Funktionen

Makro AllMacros gespeicherte Makros

Modul AllModules gespeicherte Module

Abfrage AllQueries gespeicherte Abfragen

Bericht AllReports gespeicherte Berichte

Tabelle 4.1 Alle AccessObjects im Überblick

4286-8.book Seite 203 Dienstag, 6. Dezember 2016 9:52 09

Page 7: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

204

Sehen Sie nun anhand einiger Beispiele, wie Sie diese Auflistungsobjekte einsetzen

können.

Im Beispiel aus Listing 4.15 lesen Sie die Namen aller Module aus, die sich in Ihrer

aktuellen Datenbank befinden:

Sub AlleModuleAuflisten()Dim obj As AccessObjectDim dbs As Object

Set dbs = Application.CurrentProjectFor Each obj In dbs.AllModulesDebug.Print obj.Name

Next obj

End Sub

Listing 4.15 Alle Module in der Datenbank auflisten

Über die Eigenschaft Name lassen Sie sich die Namen der einzelnen Module ausgeben,

indem Sie das Auflistungsobjekt AllModules einsetzen.

So können Sie nach und nach jedes einzelne Access-Objekt abfragen. Die Prozedur

aus Listing 4.16 listet z. B. alle Tabellen der Datenbank auf:

Sub TabellenAuflisten()Dim obj As AccessObjectDim dbs As Object

Set dbs = Application.CurrentDataFor Each obj In dbs.AllTablesDebug.Print obj.Name

Next obj

End Sub

Listing 4.16 Alle Tabellen der Datenbank auflisten

Gespeicherte Prozedur AllStoredProcedures gespeicherte Prozeduren

Tabelle AllTables gespeicherte Tabellen

Sicht AllViews gespeicherte Ansichten

AccessObject Auflistung Enthält Informationen über

Tabelle 4.1 Alle AccessObjects im Überblick (Forts.)

4286-8.book Seite 204 Dienstag, 6. Dezember 2016 9:52 09

4.2 Das Objekt »AccessObject«

205

4

Abbildung 4.5 Alle Module der Datenbank im Direktfenster ausgeben

Im Auflistungsobjekt AllTables sind alle Tabellen der Datenbank verzeichnet. Wollen

Sie die Abfrage aus Listing 4.16 auf alle geöffneten Tabellen beschränken, setzen Sie

die Prozedur aus Listing 4.17 ein:

Sub TabelleGeöffnet()Dim obj As AccessObjectDim dbs As Object

Set dbs = Application.CurrentData

For Each obj In dbs.AllTablesIf obj.IsLoaded = True ThenDebug.Print "Name: " & obj.NameDebug.Print "Erstellungsdatum: " & obj.DateCreatedDebug.Print "Änderungsdatum: " & obj.DateModified & vblf

End IfNext obj

End Sub

Listing 4.17 Alle geöffneten Tabellen der Datenbank auflisten

Über die Eigenschaft IsLoaded ermitteln Sie, ob die Tabelle momentan geladen ist.

Über die Eigenschaft Name finden Sie den Namen der Tabelle heraus. Die Eigenschaf-

ten DateCreated sowie DateModified geben Auskunft über das Erstellungs- bzw. das

letzte Änderungsdatum der Tabelle.

4286-8.book Seite 205 Dienstag, 6. Dezember 2016 9:52 09

Page 8: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

206

Abbildung 4.6 Den Namen, das Erstellungs- sowie das Änderungsdatum

der geöffneten Tabellen herausfinden

Darüber hinaus können Sie sich mit dem AccessObject alle Abfragen der Datenbank

anzeigen lassen. Die Prozedur für diesen Zweck lautet:

Sub AlleAbfragenAuflisten()Dim obj As AccessObjectDim dbs As Object

Set dbs = Application.CurrentData

For Each obj In dbs.AllQueriesDebug.Print obj.Name

Next obj

End Sub

Listing 4.18 Alle Abfragen einer Datenbank auflisten

Mithilfe des Auflistungsobjekts AllQueries ermitteln Sie alle Abfragen der Datenbank.

Der Vollständigkeit halber ist hier noch eine Prozedur zum Auflisten aller Formulare

einer Datenbank:

Sub AlleFormulareAuflisten()Dim obj As AccessObjectDim dbs As Object

Set dbs = Application.CurrentProjectFor Each obj In dbs.AllFormsDebug.Print obj.Name

Next obj

End Sub

Listing 4.19 Alle Formulare einer Datenbank auflisten

4286-8.book Seite 206 Dienstag, 6. Dezember 2016 9:52 09

4.3 Das Objekt »CodeData«

207

4

Mit dem Auflistungsobjekt AllForms ermitteln Sie alle Formulare in Ihrer Datenbank.

Wie aber gehen Sie vor, wenn Sie prüfen möchten, ob ein bestimmtes Formular in

Ihrer Datenbank existiert? Um diese Aufgabe zu lösen, schreiben Sie eine Funktion

wie die in Listing 4.20:

Function FormularPrüfer(str) As StringDim obj As AccessObject

For Each obj In CurrentProject.AllFormsIf obj.Name = str Then str = obj.Name

NextFormularPrüfer = str

End Function

Listing 4.20 Ist ein bestimmtes Formular in der Datenbank vorhanden?

Über das Auflistungsobjekt AllForms durchlaufen Sie alle Formulare in Ihrer Daten-

bank. Prüfen Sie, ob sich das gesuchte Formular innerhalb der For Each-Schleife befin-

det. Wenn ja, rufen Sie wie in Listing 4.21 das Formular über die Methode OpenForm auf:

Sub FormularDa()On Error GoTo FehlerIf FormularPrüfer("Personal") <> "" _Then DoCmd.OpenForm "Personal"

Exit Sub

Fehler:MsgBox "Dieses Formular gibt es nicht!"

End Sub

Listing 4.21 Formular öffnen nach Prüfung

Gerade haben Sie das Objekt DoCmd verwendet. Sie sehen etwas später in diesem Kapi-

tel noch einige Beispiele für den Einsatz dieses Objekts.

4.3 Das Objekt »CodeData«

Das CodeData-Objekt verweist auf Objekte, die innerhalb der von der Serveranwen-

dung (Jet oder SQL) verwalteten Code-Datenbank gespeichert sind.

Das CodeData-Objekt besitzt mehrere Auflistungen, die bestimmte Objekttypen inner-

halb der Code-Datenbank enthalten.

4286-8.book Seite 207 Dienstag, 6. Dezember 2016 9:52 09

Page 9: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

208

Wie schon beim Objekt AccessObject gezeigt, können Sie auch mithilfe des Objekts

CodeData alle Tabellen, seien sie nun geöffnet oder nicht, im Direktbereich der Ent-

wicklungsumgebung ausgeben.

Sub TabellenAuflisten2()Dim obj As AccessObject

For Each obj In Application.CodeData.AllTablesDebug.Print obj.Name

Next obj

End Sub

Listing 4.22 Alle Tabellen auflisten

Neben der Auflistung AllTables existieren hier diejenigen Auflistungen, die ich

bereits beim Objekt AccessObject in Tabelle 4.1 beschrieben habe.

4.4 Das Objekt »DoCmd«

Sie können das Objekt DoCmd verwenden, um Microsoft-Access-Aktionen aus Visual

Basic heraus auszuführen. Eine Aktion führt Operationen durch, wie etwa das Schlie-

ßen von Fenstern, das Öffnen von Berichten und Formularen oder das Festlegen der

Werte von Steuerelementen.

4.4.1 Berichte aufrufen

In der Prozedur aus Listing 4.23 wird der Bericht Alphabetische Artikelliste geöffnet

und die Seite 1 zweimal gedruckt. Danach wird der Bericht wieder geschlossen.

Sub BerichtÖffnenUndDrucken()DoCmd.Echo FalseDoCmd.OpenReport _"Alphabetische Artikelliste", acViewPreview

DoCmd.PrintOut acPages, 1, 1, , 2DoCmd.CloseDoCmd.Echo True

End Sub

Listing 4.23 Bericht öffnen, drucken und schließen

Beim Ausführen einer Prozedur in Microsoft Access werden durch Bildschirmaktua-

lisierungen oft Informationen angezeigt, die für die Funktionalität der Prozedur

4286-8.book Seite 208 Dienstag, 6. Dezember 2016 9:52 09

4.4 Das Objekt »DoCmd«

209

4

ohne Bedeutung sind. Wenn Sie das Argument Echo auf False setzen, wird die Proze-

dur ohne Bildschirmaktualisierung ausgeführt. Beim Beenden der Prozedur schaltet

Microsoft Access automatisch Echo wieder ein und aktualisiert das Fenster. Während

der Laufzeit der Prozedur ändert sich demnach die Ansicht nicht.

Mit der Methode OpenReport öffnen Sie den angegebenen Bericht. Dabei können Sie

auswählen, in welcher Ansicht der Bericht geöffnet werden soll. Zu diesem Zweck ste-

hen Ihnen einige Konstanten zur Verfügung:

� Die Konstante acViewPreview ruft die Seitenansicht des Berichts auf.

� Über die Konstante acViewDesign wechseln Sie in den Entwurfsmodus des Be-

richts.

� Die Konstante acViewNormal gibt den Bericht sofort auf dem Drucker aus.

Die Methode PrintOut führt den Drucken-Befehl aus und hat folgende Syntax:

PrintOut(Druckbereich, Von, Bis, Druckqualität, Exemplare, ExemplareSortieren)

Im Argument Druckbereich geben Sie an, was Sie genau drucken möchten. Dabei ste-

hen Ihnen folgende Konstanten zur Verfügung:

� acPages: Damit legen Sie fest, welche Seiten des Berichts Sie drucken möchten.

Wenn Sie diese Konstante verwenden, müssen Sie die Argumente Von und Bis

angeben.

� acPrintAll: Bei diesem Argument wird der gesamte Bericht gedruckt.

� acSelection: Bei dieser Konstanten wird nur der Bereich gedruckt, der gerade mar-

kiert ist.

Für das Argument Druckqualität stehen wiederum einige Konstanten zur Verfü-

gung:

� acDraft: Dies ist die Entwurfsqualität.

� acHigh: Dahinter verbirgt sich die bestmögliche Druckqualität.

� acMedium: Damit ist eine mittlere Druckqualität gemeint.

� acLow: Durch diese Konstante erreichen Sie eine niedrige Druckqualität (Konzept-

druck).

Das nächste Argument, Exemplare, sagt aus, wie viele Kopien gedruckt werden sollen.

Beim letzten Argument, ExemplareSortieren, verwenden Sie die Einstellung True, um

die Exemplare während des Druckvorgangs zu sortieren, und False, um sie nicht zu

sortieren. Wenn Sie dieses Argument nicht angeben, wird der Standardwert True ver-

wendet.

Beim Beispiel aus Listing 4.24 wird das Objekt DoCmd dazu eingesetzt, einen Bericht

aufzurufen und diesen in einem bestimmten Zoomfaktor einzustellen.

4286-8.book Seite 209 Dienstag, 6. Dezember 2016 9:52 09

Page 10: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

210

Sub BerichtAnzeigen()

DoCmd.OpenReport "Kundenetiketten", acPreviewDoCmd.MaximizeDoCmd.RunCommand acCmdZoom75

End Sub

Listing 4.24 Bericht öffnen und in einer größeren Ansicht anzeigen

Sie können die Methode Maximize verwenden, um das aktive Fenster zu vergrößern,

sodass es das Microsoft-Access-Fenster ausfüllt. Mit dieser Aktion können Sie so viel

wie möglich vom Objekt im aktiven Fenster anzeigen.

Setzen Sie die Methode RunCommand ein, um den Zoom einzustellen. Allgemein kön-

nen Sie über diese Methode nahezu alle eingebauten Symbole und Menübefehle aus-

führen. Sie führen diesen Klick auf bestimmte Symbole und Menüs demnach »wie

von Zauberhand« aus. Alles, was Sie dieser Methode noch bekannt geben müssen, ist

das Symbol bzw. der Menübefehl, der angeklickt werden soll. In Access wird das über

eine Konstante erreicht. Die Konstante für eine Ansicht von 75 % des Berichts lautet

acCmdZoom75.

Abbildung 4.7 Einen Bericht vergrößert anzeigen

4286-8.book Seite 210 Dienstag, 6. Dezember 2016 9:52 09

4.4 Das Objekt »DoCmd«

211

4

Weitere Konstanten finden Sie in der Online-Hilfe Ihrer Entwicklungsumgebung.

Setzen Sie im Quellcode die Einfügemarke auf die Methode RunCommand, und drücken

Sie die Taste (F1). In der Online-Hilfe klicken Sie dann auf den Hyperlink acCom-

mand.

4.4.2 Tabellen nach Excel exportieren

Eine weitere Einsatzmöglichkeit für das Objekt DoCmd ist der Transfer einer Access-

Tabelle in eine Excel-Arbeitsmappe. Die Prozedur für diese Aufgabe lautet:

Sub TabelleTransferieren()

DoCmd.TransferSpreadsheet acExport, _acSpreadsheetTypeExcel9, "Artikel", _Application.CurrentProject.Path & "\Artikel.xls", True

End Sub

Listing 4.25 Access-Tabelle nach Excel exportieren

Um eine Access-Datentabelle in eine Excel-Arbeitsmappe oder auch in eine Lotus-

Tabelle zu übertragen, setzen Sie die Methode TransferSpreadsheet ein.

Die Methode TransferSpreadsheet hat folgende Syntax:

TransferSpreadsheet(Transfertyp, Dateiformat, Tabellenname, Dateiname,BesitztFeldnamen, Bereich)

Im Argument Transfertyp geben Sie an, welchen Transfer Sie genau durchführen

möchten. Sie haben dabei die Auswahl zwischen dem Export (acExport), dem Import

(acImport) oder einer Verknüpfung (acLink).

Im Argument Dateiformat geben Sie an, in welche Excel-Version (bzw. Lotus-Version)

Sie die Access-Tabelle exportieren möchten.

Im darauf folgenden Argument Tabellenname geben Sie den Namen der zu exportie-

renden Access-Tabelle an. Über das Argument Dateiname geben Sie das Ziel für den

Datenexport bekannt. Dabei muss die angegebene Datenquelle nicht einmal existie-

ren. Access legt diese neu für Sie an.

Beim Argument BesitztFeldnamen verwenden Sie den Wert True, um die erste Zeile

der Kalkulationstabelle beim Importieren, Exportieren oder Verknüpfen zur Angabe

der Feldnamen zu verwenden. Verwenden Sie hingegen den Wert False, wenn die

erste Zeile als normale Datenzeile gelten soll. Wenn Sie dieses Argument nicht ange-

ben, wird der Standardwert False verwendet.

4286-8.book Seite 211 Dienstag, 6. Dezember 2016 9:52 09

Page 11: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

212

Abbildung 4.8 Eine Access-Tabelle wurde in eine Excel-Tabelle transferiert.

Achtung

Das Argument Bereich gilt nur für Importoperationen und darf beim Export nicht

angegeben werden. Beim Import werden standardmäßig alle Datensätze importiert,

sofern dieses Argument nicht gesetzt wird.

4.4.3 Formular aufrufen und Vorauswahl treffen

Im nächsten Beispiel soll das Formular Artikel geöffnet werden. Dabei sollen nur Arti-

kel des Lieferanten Nr. 4 voreingestellt sein, in unserer Beispieldatenbank ist das die

Lieferantennummer des Lieferanten »Tokyo Traders«. Die Lösung für diese Aufgabe

können Sie Listing 4.26 entnehmen:

Sub FormularÖffnen()

DoCmd.OpenForm "Artikel", , , "[Lieferanten-Nr] = 4"

End Sub

Listing 4.26 Formular öffnen und filtern

4286-8.book Seite 212 Dienstag, 6. Dezember 2016 9:52 09

4.4 Das Objekt »DoCmd«

213

4

Die Methode OpenForm setzen Sie ein, um ein Formular zu öffnen. Diese Methode hat

folgende Syntax:

OpenForm(Formularname, Ansicht, Filtername, Bedingung, Datenmodus,Fenstermodus)

Im Argument Formularname geben Sie an, welches Formular Sie öffnen möchten. Das

Argument Ansicht können Sie leer lassen, wenn Sie Ihr Formular in der Normal-

ansicht, also per Doppelklick, öffnen möchten. Ansonsten haben Sie die folgenden

Ansichtskonstanten zur Verfügung:

� acDesign öffnet das Formular in der Entwurfsansicht.

� acFormDS öffnet das Formular in einer Tabellenansicht.

� acFormPivotChart stellt das Formular für ein Pivot-Diagramm zur Verfügung.

� acFormPivotTable: Hiermit können Sie die Felder des Formulars für eine Pivot-

Tabelle verwenden.

� acNormal öffnet das Formular in gewohnter Weise (Standardeinstellung).

� acPreview zeigt das Formular in der Seitenansicht an.

Über das Argument Filtername stellen Sie ein, welche Sätze im Formular nach dem

Starten angezeigt werden sollen. Dabei geben Sie den Namen des Feldes an, das Sie

filtern möchten. Dazu gehört ebenso das Argument Bedingung. Dort formulieren Sie

die Bedingung für den Filter.

Im Argument Datenmodus können Sie bestimmen, welche Aktionen der Anwender im

Formular durchführen darf. Zu diesem Zweck stehen Ihnen folgende Konstanten zur

Verfügung:

� acFormAdd: Der Anwender darf neue Daten ins Formular eingeben.

� acFormEdit: Änderungen an Feldinhalte sind erlaubt.

� acFormPropertySettings: Bei dieser Standardeinstellung darf der Anwender über

das Formular Daten ändern, einfügen und löschen.

� acFormReadOnly: Es dürfen keinerlei Änderungen an den Feldinhalten des Formu-

lars vorgenommen werden.

Im Argument Fenstermodus geben Sie an, wie das Formular angezeigt werden soll.

Dabei können Sie auswählen, ob Sie das Formular als Dialog (acDialog), versteckt

(acHidden), als Symbol in der Taskleiste (acIcon) oder standardmäßig (acWindowNormal)

anzeigen möchten.

4286-8.book Seite 213 Dienstag, 6. Dezember 2016 9:52 09

Page 12: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

214

Abbildung 4.9 Formular mit Filterung aufrufen

Das Objekt DoCmd wurde in der neuen Version um mehrere Methoden angerei-

chert:

� Schließen einer Datenbank

Mit der Methode CloseCurrentDatabase schließen Sie die aktuelle Datenbank.

� Schützen der Navigationsleiste

Schon lange gewünscht und jetzt umgesetzt, ist auch der Schutz der Navigations-

leiste. Über die Methode LockNavigationPane können Sie verhindern, dass Tabel-

len, Abfragen oder Berichte gelöscht werden. Die Syntax hierfür lautet:

DoCmd.LockNavigationPane (true)

� Erweiterte Suchmöglichkeit

Die Methode SearchForRecord dient dazu, Datensätze anhand von etwas kom-

plexeren Bedingungen aufzuspüren. Im folgenden Beispiel wird das Formular

Artikel geöffnet und der erste Satz mit einem Lagerbestand von mehr als 10 Stück

des Lieferanten mit der Nummer 11 im Formular angezeigt:

4286-8.book Seite 214 Dienstag, 6. Dezember 2016 9:52 09

4.5 Integrierte Dialoge einsetzen

215

4

Sub SucheKomplex()DoCmd.OpenForm "Artikel"DoCmd.SearchForRecord acDataForm, "Artikel", acNext, _"Lagerbestand>10 and [Lieferanten-Nr]=11"

End Sub

Listing 4.27 Formular öffnen, Datensatz suchen und anzeigen

Die Syntax der Methode SearchForRecord lautet:

SearchForRecord(ObjectType, ObjectName, Record, WhereCondition)

Im Argument ObjectType geben Sie den Objekttyp an:

� acActiveDataObject: Das aktive Objekt enthält den Datensatz.

� acDataForm: Ein Formular enthält den Datensatz.

� acDataFunction: Eine benutzerdefinierte Funktion enthält den Datensatz acData-

Query: Eine Abfrage enthält den Datensatz.

� acDataReport: Ein Bericht enthält den Datensatz.

� acDataServerView: Eine Serversicht enthält den Datensatz (nur Microsoft Access-

Projekt).

� acDataStoredProcedure: Eine gespeicherte Prozedur enthält den Datensatz (nur

Microsoft Access-Projekt).

� acDataTable: Eine Tabelle enthält den Datensatz.

Im Argument ObjectName geben Sie den Namen des Objekts an.

Das Argument Record bestimmt den Anfangspunkt und die Richtung der Suche. Der

Standardwert lautet acFirst.

Im letzten Argument, WhereCondition, geben Sie die Bedingung an, anhand der ge-

sucht werden soll.

4.5 Integrierte Dialoge einsetzen

Bei der Programmierung mit Dialogen müssen Sie nicht unbedingt eigene Dialoge

erstellen. Oft reicht es auch aus, wenn Sie bereits vorhandene Dialoge in Access für

Ihre eigenen Projekte nutzen. Ein weiterer Vorteil ist, dass ein Anwender diese Dia-

loge bereits kennt und sich nicht in fremde Dialoge einarbeiten muss.

Bitte beachten Sie, dass Sie für einige der folgenden Beispiele einen Verweis auf die

Microsoft Office Object Library hinzufügen müssen.

4286-8.book Seite 215 Dienstag, 6. Dezember 2016 9:52 09

Page 13: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

216

Abbildung 4.10 So setzen Sie einen Verweis auf die

»Microsoft Office Object Library« im Menü »Extras � Verweise«.

4.5.1 Das Dialogfeld »Öffnen« anzeigen

Wenn Sie aus dem Menü Datei den Befehl Öffnen aufrufen, zeigen Sie damit das

Dialogfeld Öffnen an.

Abbildung 4.11 Das Dialogfeld »Öffnen«

Ein solches Dialogfeld können Sie mitsamt der kompletten Steuerung auch über

VBA-Code anzeigen lassen. Sehen Sie sich dazu die Prozedur in Listing 4.28 an:

4286-8.book Seite 216 Dienstag, 6. Dezember 2016 9:52 09

4.5 Integrierte Dialoge einsetzen

217

4

Sub DialogOeffnen()Dim fd As FileDialogDim varAusgewaehlt As Variant

Set fd = Application.FileDialog(msoFileDialogOpen)

With fdIf .Show = -1 Then

For Each varAusgewaehlt In .SelectedItemsMsgBox "Sie haben ausgewählt: " _

& varAusgewaehltNext varAusgewaehlt

End IfEnd With

Set fd = NothingEnd Sub

Listing 4.28 Das Dialogfeld »Öffnen« anzeigen und auswerten

Im ersten Schritt deklarieren Sie eine Variable als FileDialog-Objekt. Danach benöti-

gen Sie ein Array. In diesem Array (varAusgewaehlt) werden Sie später die ausgewählten

Dateien im Dialogfeld Öffnen verwalten. Im Anschluss an die Variablendeklaration

erzeugen Sie das Objekt FileDialog und geben ihm die Konstante msoFileDialogOpen

mit. Dadurch weiß Access, dass das Dialogfeld Öffnen angezeigt werden soll.

Weitere mögliche Konstanten für integrierte Dialoge sind übrigens msoFileDialog-

FilePicker (Dialogfeld Durchsuchen mit Dateiauswahlmöglichkeit), msoFileDia-

logFolderPicker (Dialogfeld Durchsuchen mit Verzeichnisauswahlmöglichkeit)

und msoFileDialogSaveAs (Dialogfeld Speichern unter).

Über die Methode Show zeigen Sie den Dialog an. Dabei können Sie sich auch anzeigen

lassen, welche Schaltfläche auf dem Dialogfeld angeklickt wurde. Falls der Anwender

auf die Schaltfläche Öffnen klickt, wird der Wert –1 zurückgegeben. Anderenfalls,

also wenn der Anwender die Schaltfläche Abbrechen klickt oder die Taste (Esc)

drückt, meldet Access den Wert 0.

Mit einer For Each-Schleife durchlaufen Sie alle im Dialogfeld markierten Dateien, die

Sie automatisch über die Eigenschaft SelectedItems abfragen können. Die ausge-

wählten Dateien geben Sie über ein Meldungsfenster am Bildschirm aus.

Vergessen Sie nicht, am Ende das Schlüsselwort Nothing einzusetzen, um die Ver-

bindung der Objektvariablen fd zum zugehörigen Objekt FileDialog aufzuheben.

Dadurch werden die Speicher- und Systemressourcen wieder freigegeben, die für

dasjenige Objekt reserviert wurden, auf das die Variablen verweisen.

4286-8.book Seite 217 Dienstag, 6. Dezember 2016 9:52 09

Page 14: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

218

Möchten Sie das Dialogfeld Durchsuchen anzeigen und auswerten lassen, dann

setzen Sie die Prozedur aus Listing 4.29 ein:

Sub DialogSuchen()Dim fd As FileDialogDim varAusgewaehlt As Variant

Set fd = _Application.FileDialog(msoFileDialogFilePicker)

With fdIf .Show = -1 ThenFor Each varAusgewaehlt In .SelectedItemsMsgBox "Sie haben ausgewählt: " & varAusgewaehlt

Next varAusgewaehltEnd If

End WithSet fd = Nothing

End Sub

Listing 4.29 Das Dialogfeld »Durchsuchen« anzeigen und auswerten

4.5.2 Verzeichnis einstellen

Möchten Sie es dem Anwender überlassen, welches Verzeichnis er standardmäßig

zur Verfügung gestellt bekommt, wenn er aus dem Menü Datei den Befehl Öffnen

wählt, dann hilft Ihnen die Prozedur aus Listing 4.30 weiter. Dabei hat der Anwender

die Möglichkeit, sein Standardverzeichnis aus dem Dialog Durchsuchen zu wählen.

Sub OrdnerEinstellen()Dim fd As FileDialog

Set fd = Application.FileDialog(msoFileDialogFolderPicker)

With fdIf .Show = -1 ThenMsgBox "Sie haben eingestellt: " _& fd.SelectedItems(1)

'Ins ausgewählte Verzeichnis wechselnChDir fd.SelectedItems(1)

End IfEnd WithSet fd = Nothing

End Sub

Listing 4.30 Ordner über das Dialogfeld »Durchsuchen« einstellen

4286-8.book Seite 218 Dienstag, 6. Dezember 2016 9:52 09

4.5 Integrierte Dialoge einsetzen

219

4

Im ersten Schritt deklarieren Sie eine Variable als FileDialog-Objekt. Im Anschluss an

die Variablendeklaration erzeugen Sie das FileDialog-Objekt und geben ihm die Kon-

stante msoFileDialogFolderPicker mit. Dadurch weiß Access, dass das Dialogfeld

Durchsuchen angezeigt werden soll.

Über die Methode Show zeigen Sie das Dialogfeld an. Dabei können Sie zusätzlich

sehen, welche Schaltfläche auf dem Dialogfeld geklickt wurde. Falls der Anwender auf

die Schaltfläche OK klickt, wird der Wert –1 zurückgegeben. Anderenfalls – also wenn

der Anwender auf die Schaltfläche Abbrechen klickt oder die Taste (Esc) drückt –

meldet Access den Wert 0.

Über die Eigenschaft SelectedItems können Sie abfragen, welcher Ordner im Dialog-

feld Durchsuchen gewählt wurde. Den ausgewählten Ordner geben Sie über ein

Meldungsfenster am Bildschirm aus. Direkt im Anschluss daran wechseln Sie mit der

Anweisung ChDir in den ausgewählten Ordner.

Setzen Sie am Ende das Schlüsselwort Nothing ein, um die Referenz der Objektvaria-

blen fd zum zugehörigen Objekt FileDialog aufzuheben und reservierte Ressourcen

wieder freizugeben.

Abbildung 4.12 Der Dialog »Durchsuchen«

4.5.3 Dateien per Filtereinstellung suchen

Das Dialogfeld Durchsuchen können Sie einsetzen, um Dateien eines bestimmten

Dateityps anzuzeigen.

In Listing 4.31 wird das Dialogfeld Durchsuchen angezeigt und per eigener Defini-

tion nur HTML-Dateien aufgelistet:

4286-8.book Seite 219 Dienstag, 6. Dezember 2016 9:52 09

Page 15: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

220

Sub DateienSuchenMitFiltereinstellung()Dim fd As FileDialogDim varAusgewaehlt As Variant

Set fd = Application.FileDialog(msoFileDialogFilePicker)With fd.Filters.Clear.Filters.Add "Internet", "*.htm; *.html,", 1If .Show = -1 ThenFor Each varAusgewaehlt In .SelectedItemsMsgBox "Pfadname: " & varAusgewaehlt

Next varAusgewaehltEnd If

End WithSet fd = Nothing

End Sub

Listing 4.31 Das Dialogfeld »Durchsuchen« mit Voreinstellung anzeigen

Im ersten Schritt deklarieren Sie eine Variable als FileDialog-Objekt. Im Anschluss an

die Variablendeklaration erzeugen Sie das Objekt FileObject und geben diesem die

Konstante msoFileDialogFilePicker mit. Dadurch weiß Access, dass das Dialogfeld

Durchsuchen angezeigt werden soll.

Um auf das Dropdown-Listenfeld Dateityp zugreifen zu können, müssen Sie die

Eigenschaft Filters verwenden. Um den Filter zu initialisieren, wenden Sie die

Methode Clear an. Danach definieren Sie sich Ihren eigenen Filter über die Methode

Add. Dadurch fügen Sie einen neuen Dateifilter zur Liste der Filter im Dropdown-Lis-

tenfeld Dateityp des Dialogfelds Durchsuchen hinzu.

Möchten Sie im Dropdown-Feld alle Dateien zur Auswahl haben, dann geben Sie das

Filterkriterium wie folgt an:

.Filters.Add "Alle Dateien", "*.*"

Über die Methode Show zeigen Sie das Dialogfeld an. Dabei können Sie sich zusätzlich

anzeigen lassen, welche Schaltfläche auf dem Dialogfeld angeklickt wurde. In dem

Fall, dass der Anwender auf die Schaltfläche OK klickt, wird der Wert -1 zurückgege-

ben. Im anderen Fall – also wenn der Anwender auf die Schaltfläche Abbrechen

klickt oder die Taste (Esc) drückt – wird der Wert 0 von Access gemeldet.

Mit einer For Each-Schleife durchlaufen Sie alle markierten Dateien im Dialogfeld, die

Sie automatisch über die Eigenschaft SelectedItems abfragen können. Die ausge-

wählten Dateien geben Sie über ein Meldungsfenster am Bildschirm aus.

4286-8.book Seite 220 Dienstag, 6. Dezember 2016 9:52 09

4.6 Das Objekt »FileSystemObject«

221

4

Setzen Sie am Ende das Schlüsselwort Nothing ein, um die Referenz der Objektvaria-

blen fd zum zugehörigen Objekt FileDialog aufzuheben und reservierte Ressourcen

wieder freizugeben.

4.5.4 Weitere Dialogfelder verwenden

Selbstverständlich haben Sie auch die Möglichkeit, nahezu alle anderen integrierten

Dialogfelder von Access für Ihre Arbeit zu nutzen. Dazu setzen Sie die Methode Run-

Command ein. Diese Methode führt einen eingebauten Menü- oder Symbolleistenbe-

fehl aus, was bedeutet, dass Sie in der Lage sind, fast jedes Dialogfeld von Access

aufzurufen.

Im Listing 4.32 rufen Sie das Dialogfeld Optionen auf:

Sub DialogOptionenEinstellen()

DoCmd.RunCommand acCmdOptions

End Sub

Listing 4.32 Das Dialogfeld »Optionen« aufrufen

Diese Prozedur ist gleichbedeutend mit der manuellen Vorgehensweise, bei der Sie

aus dem Menü den Dialog Access-Optionen wählen.

Entnehmen Sie Tabelle 4.2, wie Sie die anderen Registerkarten per VBA öffnen können.

4.6 Das Objekt »FileSystemObject«

Über das FileSystemObject gewinnen Sie Zugriff auf Ihre Laufwerke und Ihr Netz-

werk. Dieses Objekt ist Bestandteil der Bibliothek Microsoft Scripting Runtime. Diese

Registerkarte Befehl

Abfragen DoCmd.RunCommand acCmdViewQueries

Formulare DoCmd.RunCommand acCmdViewForms

Berichte DoCmd.RunCommand acCmdViewReports

Seiten DoCmd.RunCommand acCmdViewDataAccessPages

Makros DoCmd.RunCommand acCmdViewMacros

Module DoCmd.RunCommand acCmdViewModules

Tabelle 4.2 Mögliche Ansichtskonstanten der Methode »RunCommand«

4286-8.book Seite 221 Dienstag, 6. Dezember 2016 9:52 09

Page 16: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

222

Bibliothek enthält Befehle für den Windows Scripting Host (WSH). Dabei handelt es

sich um eine eigene Skriptsprache unter Windows, die Sie auch von Access aus aufru-

fen können. Skripte können Sie einsetzen, um tägliche Routineaufgaben zu automa-

tisieren – wie das Sichern von Dateien, das Starten von Programmen, das Öffnen und

die Bearbeitung von Dateien, die Abfrage von Systeminformationen, das Erstellen

und Löschen von Verzeichnissen, die Verbindung und das Trennen von Netzlaufwer-

ken und vieles mehr.

Bevor Sie aber mit diesem Objekt arbeiten, sollten Sie erst einmal die entsprechende

Objektbibliothek einbinden und im Objektkatalog nachsehen, welche Methoden und

Eigenschaften zur Verfügung stehen.

Abbildung 4.13 Alle Methoden und Eigenschaften für die Dateibearbeitung

Um die Bibliothek Microsoft Scripting Runtime einzubinden, befolgen Sie die folgen-

den Arbeitsschritte:

1. Wählen Sie in der Entwicklungsumgebung den Befehl Verweise aus dem Menü

Extras.

2. Wählen Sie aus dem Listenfeld Verfügbare Verweise die Bibliothek Microsoft

Scripting Runtime.

4286-8.book Seite 222 Dienstag, 6. Dezember 2016 9:52 09

4.6 Das Objekt »FileSystemObject«

223

4

3. Bestätigen Sie Ihre Einstellung mit OK.

4. Drücken Sie gleich im Anschluss die Taste (F2), um den Objektkatalog aufzurufen.

5. Stellen Sie im ersten Dropdown-Feld den Eintrag Scripting ein.

4.6.1 Computerinformationen anzeigen

Möchten Sie den Namen Ihres Computers sowie den Namen des angemeldeten

Benutzers erfahren, dann können Sie die Prozedur aus Listing 4.33 ausführen:

Sub ComputerInfosAnzeigen()

Dim fsNetzwerk As Variant

Set fsNetzwerk = CreateObject("wscript.network")

Debug.Print "Computer: " & fsNetzwerk.Computername

Debug.Print "User : " & fsNetzwerk.UserName

End Sub

Listing 4.33 Computernamen und Anwendernamen ermitteln

Um Informationen bezüglich Ihres Computers abzufragen, müssen Sie auf das Ob-

jekt network zurückgreifen. Dieses Objekt erstellen Sie mit der Anweisung CreateOb-

ject. Um Schreibarbeit zu sparen, setzen Sie die Anweisung Set ein. Hiermit weisen

Sie das Objekt einer Variablen mit dem Namen Netzwerk zu. Dies ermöglicht Ihnen

später, unter dem Alias Netzwerk auf dieses Objekt zuzugreifen.

Abbildung 4.14 Den Computernamen und den

Anwendernamen im Direktbereich ausgeben

4.6.2 Verzeichnisse ermitteln

Wenn Sie mehrere Benutzer auf Ihrem PC zugelassen haben, ist es gar nicht so ein-

fach, die persönlichen Verzeichnisse auf dem PC zu finden. Um diese Verzeichnisse

zu ermitteln, können Sie die Prozedur aus Listing 4.34 einsetzen:

Sub VerzeichnisseErmitteln()

Dim wshshShell As WshShell

4286-8.book Seite 223 Dienstag, 6. Dezember 2016 9:52 09

Page 17: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

224

Set wshshShell = CreateObject("WScript.Shell")

Debug.Print "Ihr Desktop liegt unter:" _

& Chr(13) _

& wshshShell.SpecialFolders("Desktop") _

& Chr(13)

Debug.Print "Ihre Verlaufsliste liegt unter: " _

& Chr(13) _

& wshshShell.SpecialFolders("Recent") _

& Chr(13)

Debug.Print "Ihre Favoriten liegen unter: " _

& Chr(13) _

& wshshShell.SpecialFolders("Favorites") _

& Chr(13)

Debug.Print "Das Verzeichnis >>Eigene Dateien<< ist: " _

& Chr(13) _

& wshshShell.SpecialFolders("Mydocuments") _

& Chr(13)

Debug.Print "Ihr Startverzeichnis befindet sich im " _

& " Ordner: " & Chr(13) _

& wshshShell.SpecialFolders("StartMenu") _

& Chr(13)

Debug.Print "Ihre Programme finden Sie unter: " _

& Chr(13) _

& wshshShell.SpecialFolders("Programs") _

& Chr(13)

Debug.Print "Ihre Schriften sind im Ordner: " _

& Chr(13) _

& wshshShell.SpecialFolders("Fonts") _

& Chr(13)

End Sub

Listing 4.34 Die Standardverzeichnisse auswerten

4286-8.book Seite 224 Dienstag, 6. Dezember 2016 9:52 09

4.6 Das Objekt »FileSystemObject«

225

4

Abbildung 4.15 Die Windows-Verzeichnisse abfragen

Erstellen Sie das Objekt WScript.Shell mit der Methode CreateObject. Das Objekt

WScript.Shell hat mehrere Eigenschaften. Beispielsweise können Sie die Eigenschaft

SpecialFolders einsetzen, um Ihre Standardverzeichnisse bekannt zu geben. Die

Eigenschaft SpecialFolders kennt bestimmte Konstanten, die Sie abfragen können.

Unter anderem ist das die Konstante »Fonts«, die auf den Ordner mit den installier-

ten Schriftarten zeigt.

4.6.3 Tastenkombinationen programmieren

Möchten Sie ein Programm, beispielsweise den Windows-Explorer, über eine Tasten-

kombination aufrufen, dann führt die Prozedur aus Listing 4.35 Sie zum Ziel:

Sub ShortcutErzeugen()Dim wshshShell As WshShellDim strDesktop As StringDim wshscShortCut As WshShortcut

Set wshshShell = CreateObject("WScript.Shell")strDesktop = wshshShell.SpecialFolders("Desktop")Set wshscShortCut = _wshshShell.CreateShortcut(strDesktop & "\Explorer.lnk")wshscShortCut.TargetPath = "%windir%\explorer.exe"wshscShortCut.Hotkey = "ALT+CTRL+L"wshscShortCut.Save

4286-8.book Seite 225 Dienstag, 6. Dezember 2016 9:52 09

Page 18: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

226

Debug.Print "Der Shortcut ist: " & wshscShortCut.Hotkey

End Sub

Listing 4.35 Einen Shortcut erzeugen

Nach dem Starten dieser Prozedur wird eine Verknüpfung auf Ihrem Desktop erzeugt,

über die Sie ganz schnell Ihren Windows-Explorer starten können. Zusätzlich können

Sie den Explorer jetzt über die Tastenkombination (Strg)+(Alt)+(L) aufrufen.

Abbildung 4.16 Das neue Symbol auf dem Desktop zum Starten des Explorers

Erstellen Sie zuerst das Objekt Wscript.Shell mit der Methode CreateObject. Danach

definieren Sie als Speicherort für Ihre Verknüpfung zum Explorer Ihren Windows-

Desktop. Dazu setzen Sie die Eigenschaft SpecialFolders ein. Jetzt erzeugen Sie mit

der Methode CreateShortcut eine Verknüpfung auf Ihrem Desktop.

Achten Sie darauf, dass Sie beim Namen der Verknüpfung die Endung .lnk oder .url

anfügen, sonst kommt es zu einer Fehlermeldung. Nun müssen Sie ermitteln, wo

das Programm Explorer gespeichert ist. Dazu setzen Sie die Eigenschaft TargetPath

ein und geben mit der Umgebungsvariablen %windir% an, dass das Programm sich

im Windows-Verzeichnis befindet. Übergeben Sie zusätzlich zur Speicheradresse

den vollständigen Namen mit Endung. Mit der Eigenschaft Hotkey bestimmen Sie,

welche Tastenkombination Sie verwenden möchten. Mit der Methode Save speichern

Sie letztendlich den Shortcut und geben die Tastenkombination zur Information im

Direktbereich aus.

4.6.4 Website-Zugang ganz fix

Wenn Sie im Internet schnell auf eine Seite zugreifen möchten, können Sie im Inter-

net Explorer diese Webseite im Favoriten-Ordner speichern und schnell darauf

zugreifen. Allerdings können Sie die URL der Internetseite auch als Symbol auf Ihrem

Desktop ablegen. Setzen Sie dazu Listing 4.36 ein:

Sub InternetSeiteDirekt()Dim wshshShell As WshShellDim strDesktop As StringDim wshshLink As WshURLShortcut

Set wshshShell = CreateObject("WScript.Shell")strDesktop = wshshShell.SpecialFolders("Desktop")

4286-8.book Seite 226 Dienstag, 6. Dezember 2016 9:52 09

4.6 Das Objekt »FileSystemObject«

227

4

Set wshshLink = wshshShell.CreateShortcut(strDesktop _& "\Held-Office.url")

wshshLink.TargetPath = "http://www.held-office.de"wshshLink.SaveDebug.Print "Der schnelle Website-Zugang ist" & _"eingerichtet!"

End Sub

Listing 4.36 Ein Desktop-Symbol anlegen

Beachten Sie bei der Benennung des Symbols, dass der Name mit .url enden muss.

Mit einem Doppelklick auf das neue Symbol auf Ihrem Desktop gelangen Sie direkt

auf meine Website. Allerdings muss dazu die Internetverbindung aktiviert sein bzw.

aktiviert werden.

Abbildung 4.17 Eine Internetseite per Doppelklick öffnen

4.6.5 Laufwerke mappen

Wenn Sie ein Netzwerk betreiben, können Sie einzelne Verzeichnisse durch Laufwerks-

buchstaben im Explorer darstellen. Dieser Vorgang wird als Mapping bezeichnet. Damit

können Sie die gewünschten Verzeichnisse im Explorer schneller erreichen. Gerade bei

weit verzweigten Verzeichnisstrukturen sparen Sie so viel Zeit. Wenn Sie diese Arbeit

manuell durchführen möchten, wählen Sie im Windows-Explorer aus dem Menü Ex-

tras den Befehl Netzlaufwerk verbinden. Danach weisen Sie das Netzwerkver-

zeichnis einem noch freien Laufwerksbuchstaben zu und klicken abschließend auf die

Schaltfläche Fertig stellen. Dieser Vorgang benötigt Zeit, besonders wenn Sie gleich

mehrere Verzeichnisse verbinden möchten. Diese zeitraubende Aufgabe können Sie

leicht mit der folgenden Prozedur automatisch erledigen lassen. Dies lohnt sich dann,

wenn Sie dasselbe Mapping immer wieder auf neuen Rechnern vornehmen müssen.

Sub MappingsAnlegen()Dim wshnwNetzwerk As WshNetwork

Set wshnwNetzwerk = CreateObject("WScript.Network")

'Mehrere Mappings automatisch erstellenwshnwNetzwerk.MapNetworkDrive "W:", \\Hpserver\webdatenwshnwNetzwerk.MapNetworkDrive "S:", \\Hpserver\webdaten\SeminarewshnwNetzwerk.MapNetworkDrive "P:", \\Hpserver\webdaten\Programmierung

4286-8.book Seite 227 Dienstag, 6. Dezember 2016 9:52 09

Page 19: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

228

MsgBox "Die Mappings wurden durchgeführt!", vbInformationEnd Sub

Listing 4.37 Laufwerke automatisch mappen

Um Netzlaufwerke zu verbinden, verwenden Sie das Objekt WScript.Network und

seine Methode MapNetworkDrive. Die Methode verlangt als erstes Argument das Lauf-

werk, unter dem Sie in Zukunft Ihr Netzlaufwerksverzeichnis ansprechen möchten.

Im zweiten Argument geben Sie das Netzverzeichnis an, das Sie zuweisen möchten.

Abbildung 4.18 Die Laufwerke wurden gemappt.

Die Mappings können Sie aber auch wieder auflösen. Auch diese Aufgabe können Sie

wieder manuell im Explorer durchführen oder automatisch durch die Prozedur aus

Listing 4.38 erledigen lassen.

Sub MappingsAufheben()Dim wshnwNetzwerk As WshNetworkSet wshnwNetzwerk = CreateObject("WScript.Network")

Debug.Print "Die gemappten Laufwerke werden" _& "wieder freigegeben!"

'Mehrere Mappings automatisch aufhebenwshnwNetzwerk.RemoveNetworkDrive "W:"wshnwNetzwerk.RemoveNetworkDrive "S:"wshnwNetzwerk.RemoveNetworkDrive "P:"

End Sub

Listing 4.38 Mappings wieder aufheben

Über die Methode RemoveNetworkDrive heben Sie die einzelnen Mappings wieder auf.

4286-8.book Seite 228 Dienstag, 6. Dezember 2016 9:52 09

4.6 Das Objekt »FileSystemObject«

229

4

4.6.6 Gemappte Laufwerke anzeigen

In der nächsten Aufgabe geben Sie zur Information alle gemappten Laufwerke im

Direktfenster der Entwicklungsumgebung aus:

Sub MappingsAnzeigen()Dim wshshShell As WshShellDim wshnwNetzwerk As WshNetworkDim wshcoLaufwerke As WshCollectionDim intZ As Integer

Set wshnwNetzwerk = CreateObject("WScript.Network")Set wshcoLaufwerke = wshnwNetzwerk.EnumNetworkDrives

For intZ = 0 To wshcoLaufwerke.Count - 1Debug.Print wshcoLaufwerke.Item(intZ) & vbLf

Next intZ

End Sub

Listing 4.39 Mappings ermitteln und ausgeben

Ermitteln Sie mit der Eigenschaft Count, die Sie auf das Objekt EnumNetworkDrives

anwenden, die Anzahl der gemappten Laufwerke. Diese geben Sie im Direktbereich

von Access aus.

Abbildung 4.19 Alle Mappings anzeigen

4.6.7 Laufwerk auswerten

Den noch freien Speicherplatz Ihrer lokalen Festplatte ermitteln Sie über die Eigen-

schaft FreeSpace, indem Sie sie auf das FileSystemObject anwenden. Wie das genau

aussieht, sehen Sie in Listing 4.40:

4286-8.book Seite 229 Dienstag, 6. Dezember 2016 9:52 09

Page 20: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

230

Sub FreienPlattenplatzAnzeigen()Dim fs As FileSystemObjectDim drv As DriveDim str As String

Set fs = CreateObject("Scripting.FileSystemObject")Set drv = fs.GetDrive(fs.GetDriveName("C:\"))str = "Laufwerk " & UCase("C:\") & " - "str = str & drv.VolumeName & vbCrLfstr = str & "Freier Platz: " & _FormatNumber(drv.FreeSpace / 1024, 0)

str = str & " Kbytes"MsgBox str, vbInformation

End Sub

Listing 4.40 Freien Plattenplatz ermitteln

Mit der Methode GetDrive bekommen Sie Zugriff auf das Laufwerk, das Sie mit der

Methode GetDriveName übergeben. Über die Eigenschaft VolumeName lesen Sie den

Datenträgernamen des Laufwerks aus. Die Funktion FormatNumber sorgt dafür, dass

Sie die so ermittelte Größe in einen formatierten Ausdruck übersetzen. Die Null

bedeutet dabei, dass keine Nachkommastellen angezeigt werden sollen. Die Eigen-

schaft Freespace ermittelt den momentan noch freien Platz auf Ihrer Festplatte.

Abbildung 4.20 Freien Plattenplatz ermitteln und anzeigen

Möchten Sie wissen, welche Laufwerke auf Ihrem PC oder Netzwerk zur Verfügung

stehen, dann führen Sie die folgende Prozedur aus:

Sub LaufwerksbuchstabenErmitteln()Dim fs As FileSystemObjectDim drv As DriveDim drvs As DrivesDim strMedium As String

Set fs = CreateObject("Scripting.FileSystemObject")

4286-8.book Seite 230 Dienstag, 6. Dezember 2016 9:52 09

4.6 Das Objekt »FileSystemObject«

231

4

Set drvs = fs.DrivesFor Each drv In drvsDebug.Print drv.DriveLetterSelect Case drv.DriveTypeCase 0: strMedium = "Unbekannt"Case 1: strMedium = "Diskettenlaufwerk"Case 2: strMedium = "Festplatte"Case 3: strMedium = "Netzwerk"Case 4: strMedium = "CDROM"Case 5: strMedium = "Wechselplatte"

End Select

Debug.Print strMediumDebug.Print drv.ShareName & Chr(13)

Next drv

End Sub

Listing 4.41 Laufwerksinformationen abfragen

Erzeugen Sie im ersten Schritt ein FileSystemObject über die Methode CreateObject.

Danach fragen Sie über das Auflistungsobjekt Drives alle verfügbaren Laufwerke in

einer Schleife ab. In der Schleife ermitteln Sie über die Eigenschaft DriveLetter den

Laufwerksbuchstaben. Über die Eigenschaft DriveType finden Sie den Laufwerkstyp

heraus. Dabei meldet diese Eigenschaft bestimmte numerische Werte zurück, die

Rückschluss auf den Laufwerkstyp geben. Mit der Eigenschaft ShareName geben Sie

den Namen der Netzwerkressource eines bestimmten Laufwerks aus.

Abbildung 4.21 Laufwerke ermitteln und auswerten

4.6.8 Aktuelle Datenbank sichern

Da Sie standardmäßig immer nur eine Datenbank pro Sitzung geöffnet haben kön-

nen, ist es recht aufwendig, eine Sicherungskopie Ihrer Datenbank in einem anderen

Verzeichnis zu speichern. Der Weg über das Menü Datei und den Befehl Speichern

unter ist ebenso unpraktisch wie der Umweg über den Windows-Explorer. Besser ist

4286-8.book Seite 231 Dienstag, 6. Dezember 2016 9:52 09

Page 21: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

232

es, Ihre Datenbank im laufenden Betrieb zu sichern. Dazu können Sie die Methode

CopyFile aus Listing 4.42 einsetzen:

Sub DatenbankSichern()Dim fs As Scripting.FileSystemObject

Set fs = New Scripting.FileSystemObjectfs.CopyFile CurrentDb.Name, "C:\Users\" & Environ("username") & _"\Documents\Sicherung.accdb", TrueSet fs = Nothing

End Sub

Listing 4.42 Datenbank sichern

Mit der Methode CopyFile haben Sie die Möglichkeit, den aktuellen Stand Ihrer Daten-

bank zu kopieren und unter einem anderen Namen in einem anderen Verzeichnis zu

sichern.

4.6.9 Datenbank-Datumsangaben auswerten

Bei der nächsten Aufgabe soll mithilfe des FileSystemObjects eine Datenbank ausge-

wertet werden. Uns interessieren folgende Informationen:

� das Erstellungsdatum der Datenbank

� das Datum der letzten Änderung

� das Datum des letzten Zugriffs

Diese Aufgabe können Sie beispielsweise lösen, indem Sie eine Funktion schreiben,

der Sie den Namen der Datenbank übergeben, die Sie auswerten möchten. Über

einen Index zwischen 1 und 3 geben Sie dann genau an, welches Datum Sie ermitteln

möchten.

Function DB_Daten(strFileName As String, _intDatNr As Integer) As StringDim fs As Scripting.FileSystemObject

Set fs = New Scripting.FileSystemObjectWith fs.GetFile(strFileName)If intDatNr = 1 Then DB_Daten = .DateCreatedIf intDatNr = 2 Then DB_Daten = .DateLastModifiedIf intDatNr = 3 Then DB_Daten = .DateLastAccessed

4286-8.book Seite 232 Dienstag, 6. Dezember 2016 9:52 09

4.6 Das Objekt »FileSystemObject«

233

4

End With

End Function

Listing 4.43 Datumsauswertungen der Datenbank vornehmen

� Über die Eigenschaft DateCreated ermitteln Sie das Anlagedatum einer Datenbank

oder auch eines Ordners.

� Die Eigenschaft DateLastModified liefert Ihnen den genauen Zeitpunkt der letzten

Änderung einer Datenbank.

� Über die Eigenschaft DateLastAccessed ermitteln Sie das Datum des letzten

Zugriffs auf eine Datenbank oder einen Ordner.

Schreiben Sie nun noch die aufrufende Prozedur, und übergeben Sie der Funktion

nacheinander alle gewünschten Angaben:

Sub DB_Auswerten()Dim strInfo As String

Debug.Print CurrentDb.Name & vbLf

strInfo = DB_Datümer(CurrentDb.Name, 1)Debug.Print "Erstellungsdatum: " & strInfo & vbLf

strInfo = DB_Datümer(CurrentDb.Name, 2)Debug.Print "Letztes Änderungsdatum: " & strInfo & vbLf

strInfo = DB_Datümer(CurrentDb.Name, 3)Debug.Print "Letztes Zugriffsdatum: " & strInfo & vbLf

End Sub

Listing 4.44 Datenbanknamen und gewünschten Datumsindex übergeben

Abbildung 4.22 Alle Informationen zur aktuellen Datenbank

4286-8.book Seite 233 Dienstag, 6. Dezember 2016 9:52 09

Page 22: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

4 Ein Streifzug in die Welt der Objekte

234

4.6.10 Verzeichnisstruktur auslesen

Im Beispiel aus Listing 4.45 wird eine Verzeichnisstruktur ausgelesen:

Function OrdnerDurchsuchen(strV As String) As BooleanDim fs As ObjectDim objOrdner As ObjectDim objSub As ObjectDim intZ As Integer

intZ = 0Set fs = CreateObject("Scripting.FileSystemObject")Set objOrdner = fs.GetFolder(strV)

For Each objSub In objOrdner.SubFoldersDebug.Print "Ordner " & intZ & ": " & objSub.NameintZ = intZ + 1

Next objSub

Set objOrdner = NothingSet fs = Nothing

End Function

Sub VerzeichnisStrukturAuslesen()Dim bool As Boolean

bool = OrdnerDurchsuchen("C:\Windows")

End Sub

Listing 4.45 Alle Unterordner des Windows-Ordners werden ausgelesen.

Erstellen Sie zunächst ein FileSystemObject, indem Sie die Methode CreateObject

anwenden. Danach greifen Sie über die Methode GetFolder auf das gewünschte Ver-

zeichnis zu. In einer For Each ... Next-Schleife arbeiten Sie alle Unterverzeichnisse

ab. Diese Unterverzeichnisse liegen in der Auflistung SubFolders automatisch vor.

Den Namen des jeweiligen Ordners fragen Sie über die Eigenschaft Name ab.

4286-8.book Seite 234 Dienstag, 6. Dezember 2016 9:52 09

4.6 Das Objekt »FileSystemObject«

235

4

Abbildung 4.23 Alle Unterordner des Windows-Ordners werden aufgelistet.

4286-8.book Seite 235 Dienstag, 6. Dezember 2016 9:52 09

Page 23: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

623

11

Kapitel 11

API-Funktionen einsetzen

Viele Aufgaben in Access müssen nicht unbedingt durch den Einsatz

von VBA gelöst werden. Die meisten Lösungen stecken auch schon

direkt in Windows.

Ihr Betriebssystem stellt Ihnen eine ganze Reihe von Dynamic Link Libraries (DLLs)

zur Verfügung, die Sie bei der Programmierung von Access einsetzen können. Diese

DLLs enthalten Funktionen, die u. a. für die Speicher- und Ressourcenverwaltung, die

Bereitstellung von Dialog- und Steuerelementen, den Einsatz von Zeichenfunk-

tionen, die Verwendung von Multimediafunktionen oder auch die Verwaltung von

E-Mails verantwortlich sind.

In diesem Kapitel erfahren Sie, wie Sie mit API-Aufrufen typische Aufgaben in Access

erledigen können. Unter anderem werden dabei folgende Lösungen präsentiert:

� Ermitteln des CD-ROM-Laufwerks

� automatisches Öffnen und Schließen des CD-ROM-Laufwerks

� den Namen des angemeldeten Anwenders ermitteln

� die eingestellte Bildschirmauflösung ermitteln

� externes Programm starten und überwachen

� Anwendungsprogramme schlafen schicken

� Windows-Version ermitteln

� Verzeichnisse erstellen und abfragen

� den Windows-Info-Dialog aufrufen

� die Umgebungsvariablen von Windows ausgeben

� Texte mit API-Aufrufen konvertieren

� Sounds und Signale über eine API-Funktion ausgeben

� Tastenklicks überwachen

� Internetstatus überprüfen

� E-Mail versenden

� Standarddrucker abfragen

� Passwortverschlüsselung

4286-8.book Seite 623 Dienstag, 6. Dezember 2016 9:52 09

Page 24: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

624

Die in diesem Kapitel vorgestellten Lösungen finden Sie in den Materialien zum

Buch im Ordner Kap11 unter dem Namen API.accdb.

Wie Sie sehen, decken API-Funktionen nahezu alle Aufgaben in Windows und somit

auch in Access ab. Der Vorteil von API-Aufrufen ist beispielsweise auch ihre univer-

selle Einsetzbarkeit. Ob Sie in Access, Excel, Word oder einer anderen beliebigen

Windows-Anwendung mit Programmierschnittstelle arbeiten, ist dabei gleichgültig.

Sie können API-Funktionen aus nahezu jeder Anwendung heraus aufrufen und für

Ihre Aufgaben nutzen.

Die bekannteste API ist die Windows-API, zu der auch die DLLs gehören, aus denen

das Windows-Betriebssystem besteht. Jede Windows-Anwendung kommuniziert

direkt oder indirekt mit der Windows-API. Durch die Windows-API wird sicherge-

stellt, dass das Verhalten aller unter Windows laufenden Anwendungen konsistent

bleibt.

Ein Nachteil von API-Funktionen ist, dass Sie sie in der Online-Hilfe leider nicht nach-

schlagen können bzw. dass die Syntax zur Deklaration – also zum Verfügbarmachen

innerhalb des Programms – von API-Funktionen recht kompliziert ist. Ein weiterer

Punkt ist, dass API-Funktionen sehr sensibel reagieren, wenn Sie irgendein Argu-

ment nicht korrekt wiedergeben bzw. die Syntax der API-Funktion nicht genau ein-

halten. Access reagiert dann nicht selten mit einem Programmabsturz.

11.1 Das CD-ROM-Laufwerk ermitteln

In der ersten Aufgabe werden Sie über den Einsatz einer API-Funktion herausfinden,

welcher Laufwerksbuchstabe Ihrem CD-ROM-Laufwerk zugeordnet ist.

Declare Function GetDriveType Lib "kernel32" Alias _"GetDriveTypeA" (ByVal nDrive As String) As Long

Declare Function GetLogicalDriveStrings Lib "kernel32" Alias _"GetLogicalDriveStringsA" (ByVal nBufferLength As Long, _

ByVal lpBuffer As String) As Long

Public Const DRIVE_CDROM As Long = 5

Function CdRomLWBuchstabe() As StringDim lngLWTyp As LongDim strLW As StringDim lng As LongDim lng1 As LongDim strBuffer As String

4286-8.book Seite 624 Dienstag, 6. Dezember 2016 9:52 09

11.1 Das CD-ROM-Laufwerk ermitteln

625

11

strBuffer = Space(200)lng = GetLogicalDriveStrings(200, strBuffer)If lng = 0 ThenCdRomLWBuchstabe = vbNullStringExit Function

End Iflng1 = 1strLW = Mid(strBuffer, lng1, 3)Do While (Mid(strBuffer, lng1, 1) <> vbNullChar)lngLWTyp = GetDriveType(strLW)If lngLWTyp = 5 ThenCdRomLWBuchstabe = strLWExit Function

End Iflng1 = lng1 + 4strLW = Mid(strBuffer, lng1, 3)

LoopEnd Function

Listing 11.1 API-Funktion zur Ermittlung des CD-ROM-Laufwerks

Bevor Sie von VBA aus eine Funktion in einer DLL aufrufen können, müssen Sie VBA

mitteilen, wo sich die Funktion befindet und wie sie aufgerufen wird. Dazu verwen-

den Sie eine Declare-Anweisung in einem Modul. Sobald der Verweis festgelegt ist,

können Sie die DLL-Funktion so aufrufen, als sei sie Teil des Projekts. Durch das

Schlüsselwort Lib bestimmen Sie, welche DLL die Funktion enthält. Folgende DLLs

sind die am häufigsten verwendeten Bibliotheken in Windows:

� Kernel32.dll: Hier finden Sie Betriebssystemfunktionen z. B. für die Speicherver-

waltung und die Ressourcenbehandlung.

� User32.dll: Diese DLL übernimmt die Fensterverwaltungsfunktionen, wie z. B. Mel-

dungen, Menüs, Symbolleisten und Kommunikation.

� GDI32.dll: Damit ist die GDI-Bibliothek (Graphics Device Interface) gemeint. Sie

enthält die Funktionen für die Geräteausgabe, z. B. zum Zeichnen, zum Anzeigen

von Kontext und zur Schriftartenverwaltung.

Im zweiten Schritt schreiben Sie eine Funktion und definieren einen Puffer vom Typ

String, in den Sie alle logischen Laufwerksbezeichnungen Ihres Systems einlesen.

Danach rufen Sie die API-Funktion GetLogicalDriveStrings auf, die Ihnen alle ver-

wendeten Laufwerksbuchstaben in den Puffer schreibt. Prüfen Sie nach dem Füllen

des Puffers gleich einmal seine Länge. Sind im Puffer 0 Zeichen enthalten, konnte die

API-Funktion keine Laufwerksbuchstaben ermitteln. In diesem Fall übergeben Sie

der Funktion als Rückgabewert die Konstante vbNullString, die eine Zeichenfolge mit

dem Wert 0 darstellt. Falls der Puffer gefüllt ist, setzen Sie die Verarbeitung fort.

4286-8.book Seite 625 Dienstag, 6. Dezember 2016 9:52 09

Page 25: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

626

Im nächsten Schritt lesen Sie die einzelnen Laufwerke aus. Dazu legen Sie die Startpo-

sition fest, bei der im Puffer begonnen werden soll, und speichern den Startwert 1 in

der Variablen l. Zerlegen Sie danach den Puffer, indem Sie die Funktion Mid einset-

zen. Die Funktion Mid überträgt eine bestimmte Anzahl von Zeichen (genau drei, z. B.

a:\), beginnend bei der Startposition 1, in die String-Variable str. Setzen Sie nun eine

Schleife auf, die den Puffer Stück für Stück zerlegt. Innerhalb der Schleife wenden Sie

die API-Funktion GetDriveType an. Diese liefert den Index für das Laufwerk in der

Variablen strLW zurück. Jeder Laufwerkstyp weist einen eindeutigen Laufwerksindex

auf. Diese Indizes sehen Sie in Tabelle 11.1.

Rufen Sie nun die API-Funktion über die Prozedur aus Listing 11.2 auf:

Sub CDRomLW()Dim str As String

str = CdRomLWBuchstabe()MsgBox "Das CD-ROM-Laufwerk hat den Buchstaben " & str

End Sub

Listing 11.2 CD-ROM-Laufwerk ermitteln

11.2 Den Namen des Anwenders ermitteln

Im folgenden Beispiel soll der Name des angemeldeten Benutzers unter Windows

ermittelt und ausgegeben werden. Für diesen Zweck greifen Sie auf die Bibliothek

advapi32.dll zu und nutzen die API-Funktion GetUserName.

Erfassen Sie die API-Funktion aus Listing 11.3:

Private Declare Function GetUserName Lib "advapi32.dll" Alias _"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Index Beschreibung

2 Disketten- oder auch Zip-Laufwerk

3 Lokale Festplatte

4 Netzlaufwerk

5 CD-ROM-Laufwerk

6 RAM-Laufwerk

Tabelle 11.1 Die Laufwerksindizes für die API-Funktion »GetDriveType«

4286-8.book Seite 626 Dienstag, 6. Dezember 2016 9:52 09

11.3 Das CD-ROM-Laufwerk bedienen

627

11

Function AnwenderName() As StringDim lng As LongDim str As String

Const D_Puffer = 255str = Space(D_Puffer)lng = D_PufferIf CBool(GetUserName(str, lng)) ThenAnwenderName = Left$(str, lng - 1)

ElseAnwenderName = ""

End IfEnd Function

Sub WerBinIch()MsgBox "Der Anwender " & AnwenderName & _" ist angemeldet!"

End Sub

Listing 11.3 Anwendernamen ermitteln

Rufen Sie über eine Prozedur die Funktion AnwenderName auf. In dieser Funktion wird

ein leerer Datenpuffer erzeugt. Danach rufen Sie die API-Funktion GetUserName auf

und überprüfen, ob ein Anwendername ermittelt werden konnte. Um eventuell mit-

geschleppte Leerzeichen abzuschneiden, setzen Sie die Funktion Left ein und über-

tragen den ermittelten Anwendernamen. Da die API-Funktion ein Zeichen zu viel

überträgt, subtrahieren Sie dieses von der Gesamtlänge des ermittelten Anwender-

namens.

11.3 Das CD-ROM-Laufwerk bedienen

Haben Sie sich schon einmal überlegt, dass Sie Ihr CD-ROM-Laufwerk auch gut als

Tassenhalter verwenden können? Dazu müssen Sie es nur öffnen, und schon haben

Sie eine clevere Ablagemöglichkeit mehr. Diese nicht ganz ernst gemeinte Anwen-

dung können Sie automatisieren, indem Sie Ihr CD-ROM-Laufwerk auf Kommando

öffnen und schließen. Die API-Funktion für diese Aufgabe heißt mciSendString.

So öffnen und schließen Sie das CD-ROM-Laufwerk mithilfe der API-Funktion:

Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

4286-8.book Seite 627 Dienstag, 6. Dezember 2016 9:52 09

Page 26: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

628

Sub ÖffnenCDROMLaufwerk()mciSendString "Set CDAudio Door Open", 0&, 0, 0

End Sub

Sub SchließenCDROMLaufwerk()mciSendString "Set CDAudio Door Closed", 0&, 0, 0

End Sub

Listing 11.4 CD-ROM-Laufwerk ansprechen

11.4 Die Bildschirmauflösung ermitteln

Wollen Sie prüfen, mit welcher Bildschirmauflösung ein Anwender arbeitet, dann

setzen Sie die API-Funktion aus Listing 11.5 ein:

Declare Function GetDeviceCaps Lib "gdi32" _(ByVal hdc As Long, ByVal nIndex As Long) As Long

Declare Function GetDC Lib "user32" _(ByVal hwnd As Long) As Long

Declare Function ReleaseDC Lib "user32" _(ByVal hwnd As Long, ByVal hdc As Long) As Long

Const HORZRES = 8Const VERTRES = 10

Sub BildschirmAuflösungErmitteln()MsgBox "Ihre Bildschirmauflösung beträgt:" & _

Chr(13) & BildschirmAuflösung()End Sub

Function BildschirmAuflösung()Dim lngRval As LongDim lngDc As LongDim lngHSize As LongDim lngVSize As Long

lngDc = GetDC(0&)lngHSize = GetDeviceCaps(lngDc, HORZRES)lngVSize = GetDeviceCaps(lngDc, VERTRES)lngRval = ReleaseDC(0, lngDc)BildschirmAuflösung = lngHSize & "x" & lngVSize

End Function

Listing 11.5 Die Bildschirmauflösung ermitteln

4286-8.book Seite 628 Dienstag, 6. Dezember 2016 9:52 09

11.6 Ein externes Programm aufrufen

629

11

11.5 Ist ein externes Programm gestartet?

Im nächsten Beispiel prüfen Sie, ob Ihr E-Mail-Programm Outlook bereits gestartet

ist. Die API-Funktion für diese Aufgabe finden Sie in Listing 11.6:

Private Declare Function FindWindow Lib "user32" _Alias "FindWindowA" (ByVal szClass$, ByVal szTitle$) _As Long

Sub MailProgrammAktiv()Dim hfenster As String

hfenster = FindWindow(vbNullString, _"Microsoft Outlook")

If hfenster = 0 Then MsgBox "Outlook nicht aktiv!" _Else MsgBox ("Outlook gestartet!")

End Sub

Listing 11.6 Ist ein externes Programm gegenwärtig geöffnet?

Über die API-Funktion FindWindow prüfen Sie, ob eine andere Anwendung bereits ge-

startet ist. Ist dies der Fall, dann wird Ihnen ein Wert <>0 zurückgeliefert.

11.6 Ein externes Programm aufrufen

Um externe Programme aufzurufen, setzen Sie die API-Funktion ShellExecute ein. In

der folgenden Prozedur wird beispielsweise die Windows-Anwendung Rechner ge-

startet:

Private Declare Function ShellExecute Lib _"shell32.dll" Alias "ShellExecuteA" _(ByVal hwnd As Long, ByVal lpOperation As String, _ByVal lpFile As String, _ByVal lpParameters As String, _ByVal lpDirectory As String, ByVal bShowCMD As Long) _As Long

Sub RechnerAufrufen()Dim hwnd As Long

ShellExecute hwnd, "open", "calc.exe", 0, 0, SW_SHOWEnd Sub

Listing 11.7 Ein externes Programm starten

4286-8.book Seite 629 Dienstag, 6. Dezember 2016 9:52 09

Page 27: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

630

Dazu übergeben Sie der API-Funktion unter anderem den Namen der Anwendung,

die Sie starten möchten.

11.7 Wie lange läuft ein externes Programm?

Im nächsten Beispiel ermitteln wir, wie lange ein externes Programm läuft, und

dokumentieren den Start- und Endzeitpunkt im Direktfenster. Nehmen wir bei-

spielsweise an, Sie möchten protokollieren, wann und wie lange Sie das Spiel Solitär

gespielt haben. Dazu setzen Sie die API-Funktionen OpenProcess sowie GetExitCode-

Process ein. Die eine API-Funktion eröffnet und überwacht den Start einer externen

Anwendung, die andere meldet das Beenden einer Anwendung zurück.

Declare Function OpenProcess Lib "kernel32" _(ByVal dwDesiredAccess As Long, _ByVal bInheritHandle As Long, _ByVal dwProcessId As Long) As Long

Declare Function GetExitCodeProcess Lib "kernel32" _(ByVal L_Prozess As Long, _l_Ende As Long) As Long

Public Const PROCESS_QUERY_INFORMATION = &H400Public Const STILL_ACTIVE = &H103

Sub StartenExternerAnwendung()Dim lng As LongDim dtmBeginn As DateDim dtmEnde As DateDim lngProzess As LongDim lngStatus As Long

dtmBeginn = Now

Debug.Print "Start des Programms um: " & Nowlng = Shell("sol.exe", 1)lngProzess = _OpenProcess(PROCESS_QUERY_INFORMATION, False, lng)

MsgBox "Zeitnahme läuft..."

Do While lngStatus = STILL_ACTIVEGetExitCodeProcess lngProzess, lngStatus

4286-8.book Seite 630 Dienstag, 6. Dezember 2016 9:52 09

11.7 Wie lange läuft ein externes Programm?

631

11

DoEventsLoop

dtmEnde = NowDebug.Print "Die Anwendung wurde um " & Now _& " beendet!"

Debug.Print "Das Programm lief genau: " & _Format(dtmEnde - dtmBeginn, "s") & " Sekunden!"

End Sub

Listing 11.8 Wie lange läuft ein gestartetes Programm?

Speichern Sie gleich zu Beginn der Prozedur die aktuelle Uhrzeit mit der Funktion Now

in der Variablen Beginn. Danach schreiben Sie diesen Startzeitpunkt in das Direkt-

fenster. Als Nächstes setzen Sie die Funktion Shell ein, um das externe Programm zu

starten. Dabei haben Sie die Möglichkeit, als Argument die Anordnung der externen

Anwendung auf dem Bildschirm zu bestimmen. Diese verschiedenen Indizes und

ihre Bedeutung finden Sie in Tabelle 11.2.

Rufen Sie jetzt die erste API-Funktion OpenProcess auf, die den aktiven Prozess (im

Beispiel das Spiel Solitär) verwaltet. Den Rückgabewert dieser Funktion speichern Sie

in einer Variablen vom Datentyp Long. Setzen Sie nun eine Schleife auf, die so lange

abgearbeitet wird, bis die API-Funktion GetExitCodeProcess die Beendigung des

externen Programms meldet. Mit der Funktion DoEvents übergeben Sie die Steue-

rung an das Betriebssystem, damit andere Ereignisse verarbeitet werden können.

Somit läuft diese Schleife im Hintergrund weiter und wird erst beendet, wenn der

Index Beschreibung

0 Das Fenster der aufgerufenen Anwendung ist ausgeblendet, und das aus-

geblendete Fenster erhält den Fokus.

1 Das Fenster hat den Fokus, und die ursprüngliche Größe und Position wer-

den wiederhergestellt.

2 Das Fenster wird als Symbol mit Fokus angezeigt.

3 Das Fenster wird maximiert (Vollbild) mit Fokus angezeigt.

4 Die zuletzt verwendete Größe und Position des Fensters wird wiederher-

gestellt. Das momentan aktive Fenster bleibt aktiv.

6 Das Fenster wird als Symbol angezeigt. Das momentan aktive Fenster bleibt

aktiv.

Tabelle 11.2 Die Möglichkeiten bei der Fensteranordnung von Programmen

4286-8.book Seite 631 Dienstag, 6. Dezember 2016 9:52 09

Page 28: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

632

Prozess beendet ist. Nach Beendigung der externen Anwendung schreiben Sie die

Laufzeit des externen Programms in das Direktfenster. Die Laufzeit ermitteln Sie,

indem Sie wiederum die Funktion Now heranziehen und diese Zeit mit der vorher

gespeicherten Startzeit in der Variablen Beginn abgleichen.

11.8 Access schlafen schicken

Möchten Sie eine Anwendung ein wenig schlafen lassen, dann können Sie die API-

Funktion aus Listing 11.9 einsetzen. Die Zeit ist in Millisekunden angegeben.

Declare Sub Sleep Lib "kernel32.dll" (ByVal SleepTime As Long)

Sub AccessZumSchlafenSchicken()Sleep (10000)MsgBox "Ruhepause beendet"

End Sub

Listing 11.9 API-Funktion zum »Schlafenlegen« einer Anwendung

11.9 Verzeichnisse erstellen

Neben der Standard-VBA-Funktion MkDir, mit der Sie einen neuen Ordner anlegen,

gibt es eine eigene API-Funktion, mit der Sie Verzeichnisse erstellen. Über API-Funk-

tionen haben Sie ganz allgemein Zugriff auf alle Ordner und Laufwerke Ihres Be-

triebssystems. So können Sie auch Verzeichnisse erstellen und löschen. In Listing

11.10 wird nach einer Benutzereingabe das gewünschte Verzeichnis angelegt:

Private Declare Function CreateDirectory Lib _"kernel32" Alias "CreateDirectoryA" _(ByVal lpPathName As String, _lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long

Private Type SECURITY_ATTRIBUTESnLength As LonglpSecurityDescriptor As LongbInheritHandle As Long

End Type

Sub VerzeichnisErstellen()Dim Security As SECURITY_ATTRIBUTESDim lng As LongDim str As String

4286-8.book Seite 632 Dienstag, 6. Dezember 2016 9:52 09

11.11 Verzeichnisbaum anzeigen und auswerten

633

11

str = InputBox("Geben Sie das Verzeichnis ein", _"Verzeichnis erstellen", "C:\Test")

If str = "" Then Exit Sub

lng = CreateDirectory(str, Security)If lng = 0 ThenMsgBox "Das Verzeichnis konnte nicht erstellt" _& " werden!", vbCritical + vbOKOnly

End IfEnd Sub

Listing 11.10 Verzeichnis mit einer API-Funktion erstellen

11.10 Verzeichnis löschen

Um ein Verzeichnis zu entfernen, können Sie die API-Funktion RemoveDirectory ein-

setzen:

Private Declare Function RemoveDirectory Lib _"kernel32" Alias "RemoveDirectoryA" _(ByVal lpPathName As String) As Long

Sub VerzeichnisLöschen()Dim lng As Longlng = RemoveDirectory("C:\Test")

End Sub

Listing 11.11 Verzeichnis mit einer API-Funktion löschen

11.11 Verzeichnisbaum anzeigen und auswerten

Im folgenden Beispiel wird Ihre Verzeichnisstruktur in einem Dialogfeld als Ver-

zeichnisbaum angezeigt und ausgewertet:

Type BROWSEINFOhOwner As LongpidlRoot As LongpszDisplayName As StringlpszTitle As StringulFlags As Longlpfn As LonglParam As LongiImage As Long

4286-8.book Seite 633 Dienstag, 6. Dezember 2016 9:52 09

Page 29: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

634

End Type

Declare Function SHGetPathFromIDList Lib "shell32.dll" _Alias "SHGetPathFromIDListA" _(ByVal pidl As Long, ByVal pszPath As _String) As Long

Declare Function SHBrowseForFolder Lib "shell32.dll" _Alias "SHBrowseForFolderA" _(lpBrowseInfo As BROWSEINFO) As Long

Declare Function FindWindow Lib "user32" _Alias "FindWindowA" (ByVal _lpClassName As String, _ByVal lpWindowName As String) As Long

Function VerzeichnisErmitteln() As StringDim bInfo As BROWSEINFODim strPath As StringDim lng As Long

lng = SHBrowseForFolder(bInfo)strPath = Space$(512)If SHGetPathFromIDList(ByVal lng, ByVal strPath) ThenVerzeichnisErmitteln = Left(strPath, _InStr(strPath, Chr$(0)) - 1)

ElseVerzeichnisErmitteln = ""

End IfEnd Function

Sub VerzeichnisBaum()Dim strVerz As String

strVerz = VerzeichnisErmitteln()If strVerz = "" Then Exit SubMsgBox "Das ausgewählte Verzeichnis lautet: " _& strVerz

End Sub

Listing 11.12 Verzeichnis auswählen und abfragen

4286-8.book Seite 634 Dienstag, 6. Dezember 2016 9:52 09

11.12 Die Windows-Version ermitteln

635

11

11.12 Die Windows-Version ermitteln

Um die installierte Windows-Version zu ermitteln, können Sie mit der API-Funktion

GetVersionEx arbeiten:

Private Type OSVERSIONINFOdwOSVersionInfoSize As LongdwMajorVersion As LongdwMinorVersion As LongdwBuildNumber As LongdwPlatformId As LongszCSDVersion As String * 128

End Type

Private Const VER_PLATFORM_WIN32s = 0Private Const VER_PLATFORM_WIN32_WINDOWS = 1Private Const VER_PLATFORM_WIN32_NT = 2

Private Declare Function GetVersionEx Lib "kernel32" _Alias "GetVersionExA" _(lpVersionInformation As OSVERSIONINFO) As Long

Sub WindowsVersion()Dim osInfo As OSVERSIONINFODim lngRet As Long

osInfo.dwOSVersionInfoSize = 148osInfo.szCSDVersion = Space(128)

lngRet = GetVersionEx(osInfo)

Select Case osInfo.dwPlatformIdCase VER_PLATFORM_WIN32sDebug.Print "Win32s on Windows 3.1"

Case VER_PLATFORM_WIN32_WINDOWSIf osInfo.dwMinorVersion = 0 ThenDebug.Print "Win32 mit Windows 95"

ElseDebug.Print "Win32 mit Windows 98"

End IfCase VER_PLATFORM_WIN32_NTIf osInfo.dwMajorVersion = 5 And _osInfo.dwMinorVersion = 0 Then

4286-8.book Seite 635 Dienstag, 6. Dezember 2016 9:52 09

Page 30: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

636

Debug.Print "Win32 mit Windows 2000"ElseIf osInfo.dwMajorVersion = 5 And _osInfo.dwMinorVersion >= 1 ThenDebug.Print "Win32 mit Windows XP"

ElseDebug.Print "Win32 mit Windows NT"

End IfEnd If

Case ElseDebug.Print "Betriebssystem unbekannt!"

End Select

Debug.Print "Version: " & osInfo.dwMajorVersion _& "." & osInfo.dwMinorVersion

Debug.Print "Build: " & osInfo.dwBuildNumberDebug.Print "Info: " & osInfo.szCSDVersion

End Sub

Listing 11.13 Die installierte Windows-Version erkennen

Die Windows-Versionen werden über dwPlatformId mit dem Wert 2 interpretiert.

Darunter werten Sie die Argumente dwMinorVersion und dwMajorVersion aus, um das

Betriebssystem zu bestimmen.

11.13 Windows-Verzeichnis ermitteln

Den exakten Namen des Windows-Verzeichnisses können Sie über eine API-Funk-

tion abfragen. Für diese Aufgabe können Sie die API-Funktion aus Listing 11.14 ein-

setzen:

Declare Function api_GetWindowsDirectory Lib _"kernel32" Alias "GetWindowsDirectoryA" _(ByVal lpBuffer As String, ByVal nSize As Long) _As Long

Function GetWinDir() As StringDim lpBuffer As String * 255Dim lngLength As Long

lngLength = _api_GetWindowsDirectory(lpBuffer, Len(lpBuffer))

GetWinDir = Left(lpBuffer, lngLength)

4286-8.book Seite 636 Dienstag, 6. Dezember 2016 9:52 09

11.15 Das temporäre Verzeichnis ermitteln

637

11

End Function

Sub WindowsVerzeichnis()Dim str As Stringstr = GetWinDirMsgBox "Ihr Windows-Verzeichnis heißt: " & str

End Sub

Listing 11.14 Windows-Verzeichnis ermitteln

11.14 Windows-Systemverzeichnis ermitteln

Um das Windows-Systemverzeichnis zu ermitteln, setzen Sie die API-Funktion Get-

SystemDirectory aus Listing 11.15 ein:

Declare Function GetSystemDirectory Lib _"kernel32" Alias "GetSystemDirectoryA" _(ByVal lpBuffer As String, ByVal nSize As Long) _As Long

Function GetSystemDir() As StringDim lpBuffer As String * 255Dim lngLength As Long

lngLength = _GetSystemDirectory(lpBuffer, Len(lpBuffer))GetSystemDir = Left(lpBuffer, lngLength)

End Function

Sub WindowsSystemVerzeichnis()Dim str As Stringstr = GetSystemDirMsgBox "Ihr Windows-Systemverzeichnis heißt: " & str

End Sub

Listing 11.15 Windows-Systemverzeichnis ermitteln

11.15 Das temporäre Verzeichnis ermitteln

Windows benötigt ein Verzeichnis, in dem es temporäre Dateien ablegt, die bei Be-

darf geladen und wieder geschlossen werden. Um dieses temporäre Verzeichnis auf-

zuspüren, setzen Sie wie in Listing 11.16 die API-Funktion GetTempPath ein:

4286-8.book Seite 637 Dienstag, 6. Dezember 2016 9:52 09

Page 31: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

638

Declare Function GetTempPath Lib _"kernel32" Alias "GetTempPathA" _(ByVal nSize As Long, ByVal lpBuffer As String) _As Long

Function GetTempDir() As StringDim lpBuffer As String * 255Dim lngLength As Long

lngLength = _GetTempPath(Len(lpBuffer), lpBuffer)GetTempDir = Left(lpBuffer, lngLength)

End Function

Sub TemporäresVerzeichnis()Dim str As Stringstr = GetTempDirMsgBox "Ihr temporäres Verzeichnis heißt: " & str

End Sub

Listing 11.16 Das temporäre Verzeichnis ermitteln

11.16 Das aktuelle Verzeichnis ermitteln

Neben der API-Funktion GetWindowsDirectory gibt es weitere API-Funktionen, um be-

stimmte Verzeichnisse zu ermitteln. Mit der Funktion GetCurrentDirectory ermitteln

Sie, welches Verzeichnis gerade aktiv ist.

Declare Function GetCurrentDirectory Lib _"kernel32" Alias "GetCurrentDirectoryA" _(ByVal nSize As Long, ByVal lpBuffer As String) _As Long

Function GetAktDir() As StringDim lpBuffer As String * 255Dim lngLength As Long

lngLength = _GetCurrentDirectory(Len(lpBuffer), lpBuffer)

GetAktDir = Left(lpBuffer, lngLength)End Function

Sub AktuellesVerzeichnis()

4286-8.book Seite 638 Dienstag, 6. Dezember 2016 9:52 09

11.18 Access-Verzeichnis ermitteln

639

11

Dim str As String

str = GetAktDirMsgBox "Ihr aktuelles Verzeichnis heißt: " & str

End Sub

Listing 11.17 Das aktuelle Verzeichnis ermitteln

11.17 Windows-Infobildschirm anzeigen

Möchten Sie einen Infobildschirm in Excel anzeigen, dann können Sie dazu die API-

Funktion ShellAbout einsetzen. Das spart Ihnen das Entwerfen und Programmieren

eines eigenen Dialogs.

Private Declare Function ShellAbout Lib "shell32.dll" _Alias "ShellAboutA" (ByVal hwnd As Long, _ByVal szApp As String, ByVal szOtherStuff As String, _ByVal hIcon As Long) As Long

Sub BildschirmAnzeigen()Dim lngHwnd As LongDim lngSymbol As Long

ShellAbout lngHwnd, "Held-Office", _"Bernd Held, MVP für Microsoft Excel" & vbCrLf & _"http://held-office.de", lngSymbol

End Sub

Listing 11.18 API-Funktion zum Anzeigen eines Infobildschirms

11.18 Access-Verzeichnis ermitteln

Sie können Access auch starten, indem Sie auf Ihrem Windows-Desktop die Schaltflä-

che Start klicken und dann den Befehl Ausführen wählen. Im Dialogfeld Ausfüh-

ren klicken Sie auf die Schaltfläche Durchsuchen, stellen Ihr Office-Verzeichnis ein

und markieren die Datei MSACCESS.exe.

Um genau diesen Pfad zu ermitteln, können Sie die API-Funktion GetCommandLine aus

Listing 11.19 verwenden:

Declare Function GetCommandLine Lib "Kernel32" _Alias "GetCommandLineA" () As String

4286-8.book Seite 639 Dienstag, 6. Dezember 2016 9:52 09

Page 32: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

640

Sub VerzeichnisAccessAnsteuern()MsgBox "Access befindet sich unter: " & _GetCommandLine()

End Sub

Listing 11.19 Das Access-Startverzeichnis ermitteln

Die API-Funktion besteht lediglich aus einem Kommando, das Sie durch eine Proze-

dur aufrufen und über die Funktion MsgBox auf dem Bildschirm ausgeben.

11.19 Standardverzeichnis festlegen

In der Regel ist das Verzeichnis Eigene Dateien Ihr Standardverzeichnis in Access. Hier

werden Access-Datenbanken standardmäßig gespeichert, bzw. beim Dialog Öffnen

wird immer dieses Verzeichnis eingestellt. Diese Einstellung können Sie ändern,

indem Sie die API-Funktion SetCurrentDirectoryA aus Listing 11.20 einsetzen.

Private Declare Function SetCurrentDirectoryA _Lib "kernel32" (ByVal lpPathName As String) As Long

Sub VerzeichnisFestlegenÜberAPI()SetCurrentDirectoryA ("c:\temp")

End Sub

Listing 11.20 Standardverzeichnis festlegen

11.20 Dateityp und Anwendung ermitteln

Im nächsten Beispiel soll ausgehend von einer bestimmten Datei die dazugehörige

Anwendung ermittelt werden.

Private Declare Function FindExecutable _Lib "shell32.dll" _Alias "FindExecutableA" (ByVal lpFile As String, _ByVal lpDirectory As String, _ByVal lpResult As String) As Long

Public Function AppFile(Datei As String) As StringDim str As String

str = Space(256)FindExecutable Datei, vbNullString, strAppFile = Left$(str, InStr(str, vbNullChar) - 1)

4286-8.book Seite 640 Dienstag, 6. Dezember 2016 9:52 09

11.21 Kurze Pfadnamen ermitteln

641

11

End Function

Sub Datei()Dim str As String

str = AppFile("C:\Eigene Dateien\Umsatz.xls")If str <> "" ThenMsgBox "Die dazugehörige Anwendung lautet: " _& vbLf & str

ElseMsgBox "Anwendung konnte nicht ermittelt werden!", _vbCritical

End IfEnd Sub

Listing 11.21 Die zur Datei gehörende Anwendung ermitteln

Wenn Sie eine Datei mitsamt dem Pfad angeben, liefert FindExecutable den komplet-

ten Pfad zur verknüpften Anwendung zurück, der in einem String über den Para-

meter lpResult übergeben wird. Existiert die angegebene Datei nicht, so wird ein

Leerstring zurückgegeben.

11.21 Kurze Pfadnamen ermitteln

Bei sehr ausgeprägten Verzeichnisstrukturen wird der Pfad in Windows oft umbro-

chen. Die API-Funktion, die dafür verantwortlich ist, heißt GetShortPathName.

Declare Function GetShortPathName Lib "kernel32" _Alias "GetShortPathNameA" _(ByVal lpszLongPath As String, _ByVal lpszShortPath As String, _ByVal cchBuffer As Long) As Long

Sub KurzerDateiname()Dim lngLangerName As StringDim lngKurzerName As StringDim lng As Long

lngLangerName = Application.CurrentDb.NamelngKurzerName = Space$(250)

lng = GetShortPathName(lngLangerName, lngKurzerName, _Len(lngKurzerName))

4286-8.book Seite 641 Dienstag, 6. Dezember 2016 9:52 09

Page 33: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

642

lngKurzerName = Left$(lngKurzerName, lng)MsgBox " Kurz: " & lngKurzerName & vbLf & _"Lang: " & Application.CurrentDb.Name, vbInformation

End Sub

Listing 11.22 Die gekürzte Pfadangabe ausgeben

Über die Anweisung Application.CurrentDb.Name ermitteln Sie den Dateinamen in-

klusive des Pfades der aktuell geöffneten Datenbank. Die Variable KurzerName wird

mit 250 Leerzeichen zunächst initialisiert. Danach wird die API-Funktion GetShort-

PathName aufgerufen. Dieser Funktion wird sowohl die Variable LangerName als auch

die noch leere Variable KurzerName sowie deren Länge übergeben. Die API-Funktion

kürzt den Pfadnamen, den Sie danach über die Funktion MsgBox auf dem Bildschirm

ausgeben.

11.22 Den Computernamen ermitteln

Den Computernamen finden Sie in der Systemsteuerung von Windows unter Netz-

werk heraus. Schneller geht es aber mit der API-Funktion GetComputerName aus Lis-

ting 11.23:

Private Declare Function GetComputerName Lib _"kernel32" Alias "GetComputerNameA" _(ByVal lpBuffer As String, nSize As Long) As Long

Sub ComputerNameAnzeigen()Dim strName As String

strName = String(255, Chr$(0))GetComputerName strName, 255MsgBox "Der Computer heißt: " & strName

End Sub

Listing 11.23 Den Computernamen ausgeben

11.23 Texte mit API-Funktionen konvertieren

Es ist möglich, mithilfe von API-Funktionen auch Texte zu konvertieren. So wandelt

die API-Funktion CharUpper einen Text in Großschreibweise um und entspricht dabei

der VBA-Funktion UCase. Die API-Funktion CharLower konvertiert einen vorgegebe-

nen Text in Kleinschreibweise und findet ihre Entsprechung in der VBA-Funktion

LCase.

4286-8.book Seite 642 Dienstag, 6. Dezember 2016 9:52 09

11.24 Die Zwischenablage löschen

643

11

Private Declare Function CharLower Lib "user32" _Alias "CharLowerA" (ByVal lpsz As String) As Long

Private Declare Function CharUpper Lib "user32" _Alias "CharUpperA" (ByVal lpsz As String) As Long

Sub TexteUmsetzen()Dim str As String

str = "API-Funktionen sind ok!"Debug.Print "Originalzustand: " + strCharUpper strDebug.Print "GROß: " + strCharLower strDebug.Print "klein: " + str

End Sub

Listing 11.24 Texte konvertieren

Das Ergebnis der Konvertierungsfunktionen wird im Direktbereich ausgegeben.

11.24 Die Zwischenablage löschen

Möchten Sie die Zwischenablage durch eine API-Funktion löschen, verwenden Sie

den Code aus Listing 11.25:

Private Declare Function OpenClipboard Lib "user32" _(ByVal hwnd As Long) As Long

Private Declare Function EmptyClipboard _Lib "user32" () As Long

Private Declare Function CloseClipboard _Lib "user32" () As Long

Sub ZwischenablageLeeren()If OpenClipboard(0&) <> 0 ThenCall EmptyClipboardCall CloseClipboard

End IfEnd Sub

Listing 11.25 Zwischenablage löschen

4286-8.book Seite 643 Dienstag, 6. Dezember 2016 9:52 09

Page 34: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

644

Befindet sich etwas in der Zwischenablage, dann meldet die API-Funktion OpenClip-

board einen Wert <> 0. Die OpenClipboard-Funktion wird dazu verwendet, die Zwi-

schenablage zu öffnen, zu prüfen und zu verhindern, dass ihr Inhalt durch andere

Anwendungen geändert wird. Mit der GetClipboardData-Funktion werden die in der

Zwischenablage gespeicherten Daten zurückgegeben, während die CloseClipboard-

Funktion dazu dient, die Zwischenablage zu schließen und sie für andere Anwendun-

gen wieder verfügbar zu machen.

11.25 Soundkarte checken

Bevor Sie Klangdateien auf Ihrem Computer abspielen können, müssen Sie zunächst

einen Test durchführen, der Ihnen zeigt, ob überhaupt eine Soundkarte auf Ihrem

System verfügbar ist. Für diese Aufgabe können Sie die API-Funktion waveOutGetNum-

Devs einsetzen:

Private Declare Function waveOutGetNumDevs _Lib "winmm.dll" () As Long

Function PrüfenSound() As BooleanPrüfenSound = waveOutGetNumDevs()

End Function

Sub SoundMöglich()If PrüfenSound = True ThenMsgBox "Soundkarte verfügbar!", vbInformation

ElseMsgBox "Soundkarte verfügbar!", vbInformation

End IfEnd Sub

Listing 11.26 Überprüfen, ob die Soundkarte einsatzbereit ist

11.26 Sounds per API-Funktion ausgeben

Mithilfe von API-Funktionen können Sie auch Ihre Soundkarte ansprechen. Spielen

Sie zum Beispiel mit der API-Funktion sndPlaySound32 aus Listing 11.27 eine WAV-

Datei ab:

Declare Function sndPlaySound32 Lib "winmm.dll" Alias _"sndPlaySoundA" (ByVal lpszSoundName As String, _ByVal uFlags As Long) As Long

4286-8.book Seite 644 Dienstag, 6. Dezember 2016 9:52 09

11.28 Tasten abfangen

645

11

Sub SoundAusgeben()Call sndPlaySound32("c:\APPLAUSE.WAV", 0)

End Sub

Listing 11.27 Sounddatei abspielen

11.27 PC piepsen lassen

Soll Ihr PC dagegen nur einen Piepton abgeben, dann setzen Sie die API-Funktion

Beep ein:

Declare Function Beep Lib "kernel32.dll" _(ByVal dwFreq As Long, ByVal dwDuration As Long) _As Long

Sub ComputerPiepst()Dim lng As Long

lng = Beep(250, 1000)If lng = 0 ThenMsgBox "PC kann nicht piepsen!"

End IfEnd Sub

Listing 11.28 PC piepsen lassen

Die API-Funktion benötigt zwei Parameter. Im ersten Argument legen Sie fest, mit

wie viel Hertz der Piepton erzeugt werden soll. Mögliche noch hörbare Werte liegen

im Bereich zwischen 37 und 5500. Im zweiten Argument legen Sie die Dauer des Piep-

tons in Millisekunden fest.

11.28 Tasten abfangen

Durch den Einsatz von API-Funktionen können Sie bestimmte Tasten abfangen. Im

folgenden Beispiel wird die Taste (Esc) überwacht:

Type KeyboardByteskbb(0 To 255) As Byte

End Type

Declare Function GetKeyboardState Lib "User32.dll" _(kbArray As KeyboardBytes) As Long

4286-8.book Seite 645 Dienstag, 6. Dezember 2016 9:52 09

Page 35: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

646

Sub TasteESCAbfangen()Dim kbArray As KeyboardBytesDoDoEventsGetKeyboardState kbArrayIf kbArray.kbb(27) And 128 ThenESCgedrückt

End If' Makro beenden mit STRGLoop Until kbArray.kbb(17) And 128

End Sub

Sub ESCgedrückt()MsgBox "Sie haben die Taste ESC gedrückt"

End Sub

Listing 11.29 API-Funktion zum Abfangen von Tastenklicks

Starten Sie die Prozedur TasteESCAbfangen. Dieses Programm läuft im Hintergrund ab

und gibt jedes Mal eine Bildschirmmeldung aus, wenn Sie die Taste (Esc) drücken.

Drücken Sie die Taste (Strg), um diese Prozedur zu beenden und die Überwachung

der Taste (Esc) abzuschließen.

11.29 Dateien suchen

Mit der API-Funktion SearchTreeForFile können Sie auch Dateien suchen und deren

Speicherpfad ermitteln:

Private Declare Function SearchTreeForFile _Lib "imagehlp" (ByVal RootPath As String, _ByVal InputPathName As String, _ByVal OutputPathBuffer As String) As Long

Const Verzeichnisse = 100

Sub DateiSuchen()Dim str As StringDim lng As Long

str = String(Verzeichnisse, 0)lng = SearchTreeForFile("C:\", "Umsatz2010.xls", str)If lng <> 0 ThenMsgBox "Datei wurde gefunden: " & vbLf & _str, vbInformation

4286-8.book Seite 646 Dienstag, 6. Dezember 2016 9:52 09

11.30 Dateiinformationen auslesen

647

11

ElseMsgBox "Datei konnte nicht gefunden werden!", _vbCritical

End IfEnd Sub

Listing 11.30 Datei über eine API-Funktion suchen

11.30 Dateiinformationen auslesen

Mithilfe von API-Funktionen lassen sich Datumsinformationen zu Dateien ermit-

teln. So werden im folgenden Beispiel das Erstellungsdatum, das letzte Zugriffsda-

tum sowie das letzte Speicherdatum einer Datenbank ermittelt:

Public Declare Function FindFirstFile _Lib "kernel32" Alias "FindFirstFileA" _(ByVal lpFileName As String, lpFindFileData _As WIN32_FIND_DATA) As Long

Public Declare Function FileTimeToSystemTime _Lib "kernel32" _(lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) _As Long

Declare Function FileTimeToLocalFileTime _Lib "kernel32" _(lpFileTime As FILETIME, _lpLocalFileTime As FILETIME) As Long

Public Type FILETIMEdwLowDateTime As LongdwHighDateTime As Long

End Type

Public Type SYSTEMTIMEwYear As IntegerwMonth As IntegerwDayOfWeek As IntegerwDay As IntegerwHour As IntegerwMinute As IntegerwSecond As IntegerwMilliseconds As Long

End Type

4286-8.book Seite 647 Dienstag, 6. Dezember 2016 9:52 09

Page 36: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

648

Public Type WIN32_FIND_DATAdwFileAttributes As LongftCreationTime As FILETIMEftLastAccessTime As FILETIMEftLastWriteTime As FILETIMEftName As String * 150

End Type

Private Function DatPrüf(FT As FILETIME) As StringDim ST As SYSTEMTIMEDim LT As FILETIMEDim lngt As LongDim lngDatum As DoubleDim lngZeit As Double

lngt = FileTimeToLocalFileTime(FT, LT)lngt = FileTimeToSystemTime(LT, ST)If lngt ThenlngDatum = DateSerial(ST.wYear, ST.wMonth, ST.wDay)lngZeit = TimeSerial(ST.wHour, ST.wMinute, _ST.wSecond)lngDatum = lngDatum + lngZeit

If lngDatum > 0 ThenDatPrüf = Format$(lngDatum, "dd.mm.yy hh:mm:ss")

ElseDatPrüf = "kein gültiges Datum"

End IfEnd If

End Function

Sub DateiInfoDialog()Dim hFile As LongDim WFD As WIN32_FIND_DATADim strDatei As StringDim strErstellt As StringDim strGespeichert As StringDim strZugriff As String

strDatei = Application.CurrentDb.NamehFile = FindFirstFile(strDatei, WFD)

If hFile > 0 ThenstrErstellt = DatPrüf(WFD.ftCreationTime)

4286-8.book Seite 648 Dienstag, 6. Dezember 2016 9:52 09

11.31 Ist die Internetverbindung aktiv?

649

11

strGespeichert = DatPrüf(WFD.ftLastWriteTime)strZugriff = DatPrüf(WFD.ftLastAccessTime)MsgBox "Datei angelegt: " & strErstellt & vbLf _& "Letzte Änderung: " & strGespeichert & vbLf _& "Letzter Zugriff: " & strZugriff, _vbInformation, strDatei

ElseMsgBox "Datei wurde nicht gefunden!", vbCritical, _strDatei

End IfEnd Sub

Listing 11.31 Dateiinformationen auslesen

Mit der Anweisung Application.CurrentDb.Name ermitteln Sie den Namen der aktuell

geöffneten Datenbank. Diesen Namen übergeben Sie an die API-Funktion FindFirst-

File. Danach übergeben Sie die Dateiinformationen an die Funktion DatPrüf. Dort

werden die gewünschten Informationen ermittelt, in das richtige Format gebracht

und an die aufrufende Prozedur zurückgegeben. Hier werden alle Informationen

zusammengefasst und in einer Bildschirmmeldung ausgegeben.

11.31 Ist die Internetverbindung aktiv?

Wenn Sie mit einer VBA-Prozedur auf das Internet zugreifen möchten, dann sollten

Sie vorher prüfen, ob Sie überhaupt mit dem Internet verbunden sind.

Public Declare Function InternetGetConnectedState _Lib "wininet.dll" _(ByRef lpdwFlags As Long, _ByVal dwReserved As Long) As Long

Sub InternetAktiv()Dim bool As Boolean

bool = InternetGetConnectedState(0&, 0&)If bool = True ThenMsgBox "Internetverbindung steht!"

ElseMsgBox "Internetverbindung fehlt!!"

End IfEnd Sub

Listing 11.32 Internetverbindung überprüfen

4286-8.book Seite 649 Dienstag, 6. Dezember 2016 9:52 09

Page 37: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

650

Über die API-Funktion InternetGetConnectedState lässt sich ermitteln, ob eine Ver-

bindung mit dem Internet besteht. Wenn ja, dann meldet diese Funktion den Wert

True zurück, den Sie auswerten können.

11.31.1 Eine E-Mail erstellen

Sie können eine API-Funktion nutzen, wenn Sie unabhängig vom E-Mail-Programm

eine E-Mail versenden möchten.

Private Declare Function ShellExecute Lib "Shell32.dll" _Alias "ShellExecuteA" (ByVal hWnd As Long, _ByVal lpOperation As String, ByVal lpFile As String, _ByVal lpParameters As String, ByVal lpDirectory As String, _ByVal nShowCmd As Long) As Long

Sub Mail(eMail As String, Optional Subject As String, _Optional Body As String)Call ShellExecute(0&, "Open", "mailto:" + eMail + "?Subject=

" + Subject + "&Body=" + Body, "", "", 1)End Sub

Sub Mail_versenden()Call Mail("[email protected]", "Hilfe", "es brennt...")

End Sub

Listing 11.33 API-Funktion zum Erstellen einer E-Mail

Über die API-Funktion ShellExecute können Sie unter anderem eine E-Mail zusam-

menstellen. Dabei können Sie den Adressaten, den Titel und den E-Mail-Text angeben.

Abbildung 11.1 Eine Standard-E-Mail per API-Funktion erstellen

4286-8.book Seite 650 Dienstag, 6. Dezember 2016 9:52 09

11.32 Cursorposition in Pixel angeben

651

11

11.32 Cursorposition in Pixel angeben

In Excel oder Access haben Sie in einer Tabelle über die Koordinaten der Zeilen und

Spalten einen relativ schnellen Überblick, wo genau der Mauszeiger steht. Diese An-

gabe in der A1-Schreibweise sagt aber nicht aus, wo der Mauszeiger genau steht. Die

genaue Position des Mauszeigers können Sie nur über die API-Funktion GetCursorPos

bestimmen. Je nach Breite der Spalten bzw. Höhe der Zeilen ändern sich dann die

Koordinaten.

Declare Function GetCursorPos Lib "user32" _(lpPoint As POINTAPI) As Long

Type POINTAPIx As Longy As Long

End Type

Sub KoordinatenErmitteln()Dim pnt As POINTAPIDim i As Integer

i = GetCursorPos(pnt)If i <> 0 ThenMsgBox "X-Position: " & pnt.x & vbLf & _"Y-Position: " & pnt.y, vbInformation

ElseMsgBox "Es konnte keine Position ermittelt werden"

End IfEnd Sub

Listing 11.34 Punktgenaue Koordinaten ermitteln

Definieren Sie zuerst die Struktur POINTAPI, in der Sie die Position des Mauszeigers in

Form der Pixel-Koordinaten speichern. Wenden Sie im Anschluss daran die API-

Funktion GetCursorPos an, die Ihnen die aktuelle Position des Mauszeigers liefert.

Geben Sie die Koordinaten danach in einer Meldung auf dem Bildschirm aus.

11.32.1 Den Standarddrucker per API abfragen

Mit der API-Funktion GetProfileString können Sie unter anderem Ihren Standard-

drucker abfragen.

Private Declare Function GetProfileString Lib "kernel32" _Alias "GetProfileStringA" (ByVal lpAppName As String, _

4286-8.book Seite 651 Dienstag, 6. Dezember 2016 9:52 09

Page 38: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

652

ByVal lpKeyName As String, ByVal lpDefault As String, _ByVal lpReturnedString As String, ByVal nSize As Long) _As Long

Sub StandardDruckerErmitteln()Dim strDruckername As String

Call AbfrageDrucker(strDruckername)MsgBox "Der Standarddrucker heißt: " & strDruckername

End Sub

Private Sub AbfrageDrucker(strDruckername As String)Dim Buffer As StringDim r As LongDim x As Long

Buffer = Space(8192)r = GetProfileString("windows", "Device", "", Buffer, Len(Buffer))If r > 0 ThenBuffer = Mid(Buffer, 1, r)x = InStr(Buffer, ",")strDruckername = Mid(Buffer, 1, x - 1)

End If

End Sub

Listing 11.35 API-Funktion zum Ermitteln des Standarddruckers

11.32.2 Texte über MD5 verschlüsseln

Um Dateien auf Integrität zu prüfen oder Passwörter in einer Datenbank zu spei-

chern, wird häufig auf den MD5-Algorithmus zurückgegriffen. VBA selbst stellt keine

Funktionalitäten dafür zur Verfügung, aber die API advapi32.dll (standardmäßig be-

reits unter Windows vorhanden) bietet einige der benötigten Hash-Funktionen.

Der Rückgabewert der Funktion ist für den gleichen Text immer derselbe. So müssen

Sie beispielsweise ein Passwort nicht als Klartext in einer Datenbank oder Tabelle

speichern, sondern nur seinen MD5-Wert, und dann beim Vergleich immer das ein-

gegebene Passwort mit dem gespeicherten MD5-Wert vergleichen.

Private Declare Function CryptAcquireContext Lib "advapi32.dll" _Alias "CryptAcquireContextA" ( _ByRef phProv As Long, _ByVal pszContainer As String, _

4286-8.book Seite 652 Dienstag, 6. Dezember 2016 9:52 09

11.32 Cursorposition in Pixel angeben

653

11

ByVal pszProvider As String, _ByVal dwProvType As Long, _ByVal dwFlags As Long) As Long

Private Declare Function CryptReleaseContext Lib "advapi32.dll" ( _ByVal hProv As Long, _ByVal dwFlags As Long) As Long

Private Declare Function CryptCreateHash Lib "advapi32.dll" ( _ByVal hProv As Long, _ByVal Algid As Long, _ByVal hKey As Long, _ByVal dwFlags As Long, _ByRef phHash As Long) As Long

Private Declare Function CryptDestroyHash Lib "advapi32.dll" ( _ByVal hHash As Long) As Long

Private Declare Function CryptHashData Lib "advapi32.dll" ( _ByVal hHash As Long, _pbData As Byte, _ByVal dwDataLen As Long, _ByVal dwFlags As Long) As Long

Private Declare Function CryptGetHashParam Lib "advapi32.dll" ( _ByVal hHash As Long, _ByVal dwParam As Long, _pbData As Any, _pdwDataLen As Long, _ByVal dwFlags As Long) As Long

Sub MD5Test()

Debug.Print "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern."Debug.Print _InMD5("Franz jagt im komplett verwahrlosten Taxi quer durch Bayern.")

End Sub

Function InMD5(Text As String) As StringDim AcquireContext As LongDim HashHandle As LongDim result As Long

4286-8.book Seite 653 Dienstag, 6. Dezember 2016 9:52 09

Page 39: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

11 API-Funktionen einsetzen

654

Dim ByteText() As ByteDim LenResult As LongDim ByteResult() As ByteDim i As IntegerByteText() = StrConv(Text, vbFromUnicode)

'Ermittle Context Handleresult = CryptAcquireContext _(AcquireContext, vbNullString, vbNullString, 1, 0)If result = 0 And Err.LastDllError = &H80090016 Then

result = CryptAcquireContext(AcquireContext, _vbNullString, vbNullString, 1, &H8)

End Ifresult = CryptCreateHash(AcquireContext, 32771, 0, 0, HashHandle)result = CryptHashData(HashHandle, ByteText(0), Len(Text), 0)result = CryptGetHashParam(HashHandle, 4, LenResult, 4, 0)ReDim ByteResult(0 To LenResult - 1) As Byteresult = CryptGetHashParam(HashHandle, 2, ByteResult(0), LenResult, 0)

For i = 0 To UBound(ByteResult)InMD5 = InMD5 & Right$("0" & Hex$(ByteResult(i)), 2)

NextCryptDestroyHash HashHandleCryptReleaseContext AcquireContext, 0

End Function

Listing 11.36 API-Funktion zum Verschlüsseln von Passwörtern

Abbildung 11.2 Der Text wurde verschlüsselt.

4286-8.book Seite 654 Dienstag, 6. Dezember 2016 9:52 09

Page 40: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Auf einen Blick

Auf einen Blick

1 Grundsätzliches zur Programmierung ..................................................... 25

2 Variablen, Konstanten und Datentypen .................................................. 53

3 Die wichtigsten Sprachelemente in Access ............................................. 85

4 Ein Streifzug in die Welt der Objekte ........................................................ 195

5 Tabellen programmieren ............................................................................ 237

6 Abfragen programmieren ........................................................................... 297

7 Programmierung von Dialogen, Steuerelementen und Formularen .... 335

8 Berichte erstellen und programmieren .................................................... 439

9 Ereignisse in Access programmieren ........................................................ 481

10 Access im Zusammenspiel mit Office ....................................................... 547

11 API-Funktionen einsetzen .......................................................................... 623

12 Datenbanken und Quellcode schützen und pflegen .............................. 655

13 VBE-Programmierung in Access ................................................................ 669

14 Anwendungen optimieren ......................................................................... 701

15 Access und das Internet .............................................................................. 711

16 Ribbons programmieren ............................................................................. 737

17 FAQ für Access-Entwickler .......................................................................... 747

4286-8.book Seite 3 Dienstag, 6. Dezember 2016 9:52 09

Page 41: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Inhalt

5

Inhalt

Vorwort .................................................................................................................................................. 21

1 Grundsätzliches zur Programmierung 25

1.1 Wie gehe ich von Anfang an richtig vor? .................................................................. 26

1.2 Die Entwicklungsumgebung von Access .................................................................. 28

1.2.1 Das Eigenschaften-Fenster ............................................................................... 29

1.2.2 Prozeduren ausführen ........................................................................................ 32

1.2.3 Wie erfahre ich mehr über die einzelnen Befehle? .................................. 32

1.3 Hilfsmittel für die Programmierung ........................................................................... 33

1.3.1 Die Symbolleiste »Bearbeiten« ........................................................................ 33

1.3.2 Automatische Syntaxprüfung ......................................................................... 40

1.3.3 Mit Tastenkombinationen arbeiten .............................................................. 41

1.4 Die Fenster und die Testumgebung ............................................................................ 42

1.4.1 Das Code-Fenster ................................................................................................. 43

1.4.2 Hilfe im Direktfenster ......................................................................................... 44

1.4.3 Den Code Schritt für Schritt durchlaufen lassen ....................................... 45

1.4.4 Überwachung hinzufügen ................................................................................ 46

1.4.5 Das Lokal-Fenster ................................................................................................. 48

1.5 Weitere Einstellungen ...................................................................................................... 49

1.5.1 Editor-Einstellungen ........................................................................................... 49

1.5.2 Allgemeine Einstellungen vornehmen ......................................................... 50

1.5.3 Fenster verankern ................................................................................................ 52

2 Variablen, Konstanten und Datentypen 53

2.1 Regeln für die Syntax von Variablen .......................................................................... 54

2.2 Variablen am Beginn der Prozedur deklarieren .................................................... 54

2.3 Die verschiedenen Variablentypen ............................................................................. 55

2.3.1 Statische Variablen .............................................................................................. 55

2.3.2 Private Variablen .................................................................................................. 56

2.3.3 Öffentliche Variablen ......................................................................................... 56

2.4 Variablendeklarationen erzwingen ............................................................................ 57

4286-8.book Seite 5 Dienstag, 6. Dezember 2016 9:52 09

Page 42: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Inhalt

6

2.5 Die wichtigsten Variablentypen ................................................................................... 58

2.6 Noch kürzere Deklaration von Variablen ................................................................. 60

2.7 Die Reddick-Namenskonvention ................................................................................. 61

2.8 Variablendeklaration mit »DefType« ........................................................................ 62

2.9 Aufzählungstypen (»Enum«-Anweisung) ................................................................ 63

2.10 Konstanten verwenden .................................................................................................... 64

2.11 Systemkonstanten einsetzen ........................................................................................ 65

2.11.1 Datumsformat-Konstanten .............................................................................. 65

2.11.2 »Dir«-Konstanten ................................................................................................. 70

2.11.3 File-Input/Output-Konstanten ........................................................................ 72

2.11.4 Die Shell-Konstanten .......................................................................................... 76

2.11.5 »StrConv«-Konstanten ....................................................................................... 78

2.11.6 »VarType«-Konstanten ...................................................................................... 79

2.11.7 Die »DoCmd.RunCommand«-Konstanten .................................................. 82

3 Die wichtigsten Sprachelemente in Access 85

3.1 Prozeduren ............................................................................................................................. 85

3.1.1 Sub-Prozeduren .................................................................................................... 86

3.1.2 Function-Prozeduren .......................................................................................... 90

3.1.3 Übergabe von Argumenten .............................................................................. 92

3.1.4 Optionale Argumente ......................................................................................... 95

3.2 Verzweigungen/Bedingungen ...................................................................................... 95

3.2.1 Eingaben auswerten ........................................................................................... 96

3.2.2 Eingaben prüfen und umwandeln ................................................................. 98

3.2.3 Eine Besonderheit ................................................................................................ 101

3.3 Die Anweisung »Select Case« für mehr Übersicht ............................................... 102

3.3.1 Zahlenwerte mit »Select Case« prüfen ......................................................... 102

3.3.2 Textwerte mit »Select Case« prüfen ............................................................. 104

3.4 Schleifen in Access einsetzen ......................................................................................... 105

3.4.1 »For ... Next«-Schleifen ....................................................................................... 105

3.4.2 »For Each ... Next«-Schleifen ............................................................................ 108

3.4.3 Die Schleife »Do Until … Loop« ........................................................................ 113

3.4.4 Die Schleife »Do While ... Loop« ...................................................................... 115

3.5 »With«-Anweisungen ....................................................................................................... 117

4286-8.book Seite 6 Dienstag, 6. Dezember 2016 9:52 09

Inhalt

7

3.6 VBA-Funktionen einsetzen ............................................................................................. 118

3.6.1 Textdateien einlesen .......................................................................................... 118

3.6.2 Eingegebene E-Mail-Adressen prüfen ........................................................... 120

3.6.3 Textteile extrahieren .......................................................................................... 121

3.6.4 Dateiendungen prüfen ....................................................................................... 123

3.6.5 Texte kürzen und extrahieren ......................................................................... 125

3.6.6 Texte splitten ......................................................................................................... 128

3.6.7 Texte zerlegen, konvertieren und wieder zusammensetzen ................ 129

3.6.8 Texte bereinigen ................................................................................................... 131

3.6.9 Zahlenwerte runden ........................................................................................... 131

3.6.10 Dateien löschen .................................................................................................... 132

3.6.11 Verzeichnis(se) erstellen .................................................................................... 133

3.6.12 Verzeichnisse löschen ......................................................................................... 135

3.6.13 Wochentag ermitteln ......................................................................................... 136

3.6.14 Monat ermitteln ................................................................................................... 137

3.6.15 Datumsteile extrahieren ................................................................................... 138

3.6.16 Datumsberechnungen durchführen ............................................................. 139

3.6.17 Zukünftige Termine berechnen ...................................................................... 139

3.6.18 Datumsangaben formatieren .......................................................................... 141

3.6.19 Zeitfunktionen einsetzen .................................................................................. 143

3.6.20 Farbfunktionen verwenden .............................................................................. 145

3.6.21 Werte aus einer Liste auswählen .................................................................... 148

3.6.22 Ganzzahligen Wert extrahieren ...................................................................... 149

3.7 Umwandlungsfunktionen ............................................................................................... 150

3.7.1 Die Typumwandlungsfunktion »CBool« ...................................................... 151

3.7.2 Die Typumwandlungsfunktion »CDbl« ........................................................ 154

3.7.3 Die Typumwandlungsfunktion »CDate« ..................................................... 154

3.7.4 Die Funktion »Val« ............................................................................................... 155

3.8 Die »Is«-Funktionen in VBA ............................................................................................ 157

3.8.1 Die Funktion »IsArray« ....................................................................................... 157

3.8.2 Die Funktion »IsDate« ........................................................................................ 159

3.8.3 Die Funktionen »IsEmpty« und »IsNull« ...................................................... 159

3.8.4 Die Funktion »IsObject« ..................................................................................... 161

3.8.5 Arbeiten mit Arrays ............................................................................................. 162

3.8.6 Einfache Arrays ..................................................................................................... 162

3.8.7 Mehrdimensionale Arrays ................................................................................. 163

3.8.8 Das Praxisbeispiel »Straßentausch« .............................................................. 166

3.8.9 Das Praxisbeispiel »Top 3 Max« und »Top 3 Min« .................................... 169

3.9 Operatoren ............................................................................................................................. 174

3.9.1 Arithmetische Operatoren ................................................................................ 174

4286-8.book Seite 7 Dienstag, 6. Dezember 2016 9:52 09

Page 43: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Inhalt

8

3.9.2 Vergleichsoperatoren ......................................................................................... 175

3.9.3 Verkettungsoperatoren ..................................................................................... 176

3.9.4 Logische Operatoren ........................................................................................... 177

3.10 Eigene Funktionen schreiben ........................................................................................ 178

3.10.1 Dateien in einem Verzeichnis zählen ............................................................ 178

3.10.2 Prüfen, ob eine bestimmte Datei existiert .................................................. 179

3.10.3 Prüfen, ob eine Datei gerade bearbeitet wird ............................................ 180

3.10.4 Dokumenteigenschaften einer Datenbank ermitteln ............................. 181

3.10.5 Den letzten Tag im Monat ermitteln ............................................................ 183

3.10.6 Sonderzeichen aus Strings entfernen ........................................................... 184

3.10.7 Eine eigene Runden-Funktion erstellen ....................................................... 185

3.10.8 Die Position der ersten Zahl eines Strings ermitteln ............................... 187

3.10.9 Buchstaben eliminieren ..................................................................................... 188

3.10.10 Römische Ziffern in arabische Ziffern umwandeln .................................. 189

3.10.11 Arabische Zahlen in die römische Syntax umwandeln ........................... 191

3.10.12 Die Anzahl der Zahlen in einem String ermitteln ..................................... 192

3.10.13 Die Anzahl der Buchstaben in einem String zählen ................................. 192

4 Ein Streifzug in die Welt der Objekte 195

4.1 Das »Application«-Objekt ............................................................................................... 195

4.1.1 Datenbankinformationen erhalten ............................................................... 196

4.1.2 Aktuellen Anwendernamen ermitteln .......................................................... 197

4.1.3 Installierte Drucker ermitteln .......................................................................... 197

4.1.4 Datenbank schließen .......................................................................................... 198

4.1.5 Access beenden .................................................................................................... 198

4.1.6 Aktuelle Access-Version ausgeben ................................................................. 199

4.1.7 Formular anlegen ................................................................................................. 199

4.1.8 Durchschnitt errechnen ..................................................................................... 201

4.1.9 Summen ermitteln .............................................................................................. 201

4.1.10 Datensätze zählen ............................................................................................... 202

4.1.11 Minimal- und Maximalwerte ermitteln ....................................................... 202

4.2 Das Objekt »AccessObject« ............................................................................................ 203

4.3 Das Objekt »CodeData« ................................................................................................... 207

4.4 Das Objekt »DoCmd« ........................................................................................................ 208

4.4.1 Berichte aufrufen ................................................................................................. 208

4.4.2 Tabellen nach Excel exportieren ..................................................................... 211

4.4.3 Formular aufrufen und Vorauswahl treffen ............................................... 212

4286-8.book Seite 8 Dienstag, 6. Dezember 2016 9:52 09

Inhalt

9

4.5 Integrierte Dialoge einsetzen ........................................................................................ 215

4.5.1 Das Dialogfeld »Öffnen« anzeigen ................................................................ 216

4.5.2 Verzeichnis einstellen ......................................................................................... 218

4.5.3 Dateien per Filtereinstellung suchen ............................................................ 219

4.5.4 Weitere Dialogfelder verwenden ................................................................... 221

4.6 Das Objekt »FileSystemObject« ................................................................................... 221

4.6.1 Computerinformationen anzeigen ................................................................ 223

4.6.2 Verzeichnisse ermitteln ..................................................................................... 223

4.6.3 Tastenkombinationen programmieren ........................................................ 225

4.6.4 Website-Zugang ganz fix .................................................................................. 226

4.6.5 Laufwerke mappen .............................................................................................. 227

4.6.6 Gemappte Laufwerke anzeigen ...................................................................... 229

4.6.7 Laufwerk auswerten ........................................................................................... 229

4.6.8 Aktuelle Datenbank sichern ............................................................................. 231

4.6.9 Datenbank-Datumsangaben auswerten ..................................................... 232

4.6.10 Verzeichnisstruktur auslesen ........................................................................... 234

5 Tabellen programmieren 237

5.1 Tabellen bearbeiten mit »DoCmd« ............................................................................. 237

5.1.1 Tabelle öffnen ....................................................................................................... 238

5.1.2 Tabellen filtern ...................................................................................................... 243

5.1.3 Tabellen kopieren ................................................................................................. 246

5.1.4 Tabellen umbenennen ....................................................................................... 246

5.2 Tabellen mit ADO programmieren .............................................................................. 247

5.2.1 Tabelleninhalte auslesen .................................................................................. 248

5.3 SQL-Anweisungen ............................................................................................................... 251

5.3.1 Die SELECT-Anweisung ...................................................................................... 251

5.3.2 UNION-Anweisung .............................................................................................. 253

5.3.3 Die TOP-Anweisung ............................................................................................ 255

5.3.4 Eine externe Datenbank öffnen ...................................................................... 256

5.3.5 Tabelleninhalte suchen und ausgeben ........................................................ 258

5.3.6 Lagerbestände manipulieren ........................................................................... 266

5.3.7 Preiserhöhung durchführen ............................................................................. 267

5.3.8 Tabellen updaten ................................................................................................. 270

5.3.9 Artikel bewerten ................................................................................................... 271

5.3.10 Datensätze filtern ................................................................................................ 272

5.3.11 Datensätze sortieren .......................................................................................... 273

5.3.12 Datensätze zählen ............................................................................................... 276

4286-8.book Seite 9 Dienstag, 6. Dezember 2016 9:52 09

Page 44: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Inhalt

10

5.3.13 Lesezeichen einsetzen ........................................................................................ 278

5.3.14 Datensätze löschen ............................................................................................. 279

5.3.15 Datensätze hinzufügen ..................................................................................... 281

5.4 Tabellenstrukturen mit ADOX ermitteln .................................................................. 283

5.4.1 Tabellen auslesen ................................................................................................ 283

5.4.2 Tabellenstruktur auslesen ................................................................................ 286

5.4.3 Eine neue Tabelle anlegen ................................................................................ 289

5.4.4 Tabellen löschen ................................................................................................... 292

5.5 Datenbanken suchen und dokumentieren .............................................................. 293

6 Abfragen programmieren 297

6.1 Abfragetypen ........................................................................................................................ 297

6.2 Abfragen durchführen ...................................................................................................... 299

6.3 Abfragen mit SQL generieren ........................................................................................ 301

6.4 Aktualisierungsabfrage – Artikelnamen ändern .................................................. 301

6.4.1 Aktualisierungsabfrage – Felder initialisieren ........................................... 302

6.5 Anfügeabfrage – Mitarbeiter hinzufügen ............................................................... 304

6.6 Löschabfrage ausführen ................................................................................................... 307

6.7 Tabellenerstellungsabfrage durchführen ................................................................ 310

6.7.1 Öffnen oder neu anlegen .................................................................................. 311

6.8 Datendefinitionsabfragen durchführen ................................................................... 312

6.8.1 Neue Tabelle anlegen ......................................................................................... 313

6.8.2 Tabellen ändern .................................................................................................... 317

6.8.3 Einen Tabellenindex bestimmen .................................................................... 318

6.8.4 Tabellenindex entfernen ................................................................................... 320

6.8.5 Tabelle entfernen ................................................................................................. 321

6.9 Daten zusammenführen .................................................................................................. 321

6.10 Abfragen mit ADO programmieren ............................................................................ 324

6.10.1 Tabellen durch eine Abfrage erstellen .......................................................... 324

6.10.2 Daten aus Tabelle entfernen ............................................................................ 326

6.10.3 Eine Abfrage erstellen ........................................................................................ 326

6.10.4 Komplexere Abfragen generieren .................................................................. 328

6.10.5 Parameterabfragen erstellen ........................................................................... 332

4286-8.book Seite 10 Dienstag, 6. Dezember 2016 9:52 09

Inhalt

11

7 Programmierung von Dialogen, Steuerelementen und Formularen 335

7.1 Das Meldungsfeld »MsgBox« ........................................................................................ 336

7.1.1 Welche Schaltfläche wurde angeklickt? ....................................................... 337

7.1.2 Löschrückfrage einholen ................................................................................... 338

7.1.3 Informationen anzeigen .................................................................................... 339

7.1.4 Ist eine bestimmte Datenbank vorhanden? ............................................... 340

7.2 Die Eingabemaske »InputBox« ..................................................................................... 340

7.2.1 Mehrwertsteuer errechnen .............................................................................. 341

7.2.2 Mehrere Eingaben erfassen .............................................................................. 342

7.3 Formulare erstellen ............................................................................................................ 343

7.3.1 Formulare selbst zusammenstellen .............................................................. 345

7.3.2 Die Steuerelemente aus der Toolbox ............................................................ 346

7.3.3 Steuerelemente einfügen ................................................................................. 349

7.3.4 Formularfelder bearbeiten ................................................................................ 350

7.3.5 Aktivierreihenfolge anpassen .......................................................................... 351

7.3.6 Formularfelder formatieren ............................................................................. 352

7.3.7 Formulareigenschaften einstellen ................................................................. 353

7.3.8 Steuerelementeigenschaften einstellen ...................................................... 358

7.3.9 Bedingte Formatierung ...................................................................................... 362

7.3.10 Schaltflächen einfügen ...................................................................................... 365

7.3.11 Weitere wichtige Schaltflächen integrieren ............................................... 368

7.3.12 Steuerelemente identifizieren ......................................................................... 373

7.3.13 Formular aufrufen ............................................................................................... 378

7.3.14 Formular schließen .............................................................................................. 380

7.3.15 Textfelder programmieren ............................................................................... 381

7.3.16 Textfeldinhalte retten ........................................................................................ 385

7.3.17 Quickinfos hinzufügen ....................................................................................... 386

7.3.18 Textfelder aktivieren und sperren .................................................................. 387

7.3.19 Eingaben in Textfelder zaubern ...................................................................... 389

7.3.20 Textfelder dynamisch ein- und ausblenden ............................................... 393

7.3.21 Textfelder begrenzen .......................................................................................... 395

7.3.22 Datentyp bei Eingabe überwachen ................................................................ 396

7.3.23 Bezeichnungsfelder einsetzen ......................................................................... 396

7.3.24 Kombinationsfeldlisten erstellen und programmieren .......................... 398

7.3.25 Listenfelder programmieren ............................................................................ 404

7.3.26 Kontrollkästchen programmieren .................................................................. 411

4286-8.book Seite 11 Dienstag, 6. Dezember 2016 9:52 09

Page 45: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Inhalt

12

7.3.27 Optionsschaltflächen programmieren ......................................................... 414

7.3.28 Registerelemente programmieren ................................................................. 418

7.3.29 Die Uhr im Formular ........................................................................................... 422

7.3.30 Das »TreeView«-Steuerelement ..................................................................... 425

7.3.31 Das Media-Player-Steuerelement .................................................................. 426

7.3.32 Einen Hyperlink in ein Formular integrieren .............................................. 428

7.3.33 »ImageList« und »ListView« programmieren ............................................. 430

7.3.34 Diagramme in Formulare integrieren ........................................................... 433

8 Berichte erstellen und programmieren 439

8.1 Berichtsarten in Access ..................................................................................................... 439

8.2 Der Berichtsaufbau ............................................................................................................. 440

8.3 Berichte entwerfen ............................................................................................................ 441

8.4 Berichte bearbeiten mit »DoCmd« ............................................................................. 442

8.4.1 Berichte öffnen ..................................................................................................... 442

8.4.2 Bericht aus einer anderen Datenbank öffnen ............................................ 443

8.4.3 Bericht mit Vorauswahl öffnen ....................................................................... 444

8.4.4 Berichte drucken .................................................................................................. 446

8.4.5 Berichte kopieren und umbenennen ............................................................ 447

8.4.6 Berichte ausgeben ............................................................................................... 449

8.5 Berichte formatieren ......................................................................................................... 449

8.5.1 Rot und Weiß im Wechsel ................................................................................. 449

8.5.2 Schriftformatierungen anwenden ................................................................. 450

8.6 Berichte identifizieren ...................................................................................................... 454

8.6.1 Berichte zählen ..................................................................................................... 455

8.6.2 Berichtselemente ansprechen ......................................................................... 455

8.6.3 Berichtselemente auflisten .............................................................................. 456

8.6.4 Die verschiedenen Sektionen eines Berichts .............................................. 460

8.7 Berichte erstellen ................................................................................................................ 461

8.7.1 Steuerelemente einfügen ................................................................................. 462

8.7.2 Vollautomatische Berichtserstellung ............................................................ 465

8.7.3 Bereiche vergrößern ............................................................................................ 467

8.7.4 Bereiche ein- und ausblenden ......................................................................... 469

8.7.5 Seitenzahlen, Datum und Namen .................................................................. 471

8.7.6 Überschriften, Trennlinien und Summen .................................................... 474

4286-8.book Seite 12 Dienstag, 6. Dezember 2016 9:52 09

Inhalt

13

9 Ereignisse in Access programmieren 481

9.1 Das Ereignis »Form_Open« ............................................................................................. 482

9.1.1 Zugang zu einem Formular einrichten ......................................................... 482

9.1.2 Den Fokus auf ein bestimmtes Formularfeld setzen ............................... 483

9.1.3 Verknüpfte Tabelle eines Formulars prüfen ............................................... 484

9.2 Das Ereignis »Form_Close« ............................................................................................. 485

9.2.1 Weitere Formulare und Tabellen schließen ................................................ 485

9.2.2 Countdown programmieren ............................................................................ 487

9.2.3 Öffnen nach dem Schließen ............................................................................. 487

9.3 Das Ereignis »Form_Load« .............................................................................................. 488

9.3.1 Beim Laden des Formulars ein Listenfeld füllen ........................................ 488

9.4 Das Ereignis »Form_Current« ........................................................................................ 490

9.4.1 Letzter Datensatz erreicht? .............................................................................. 490

9.4.2 Felder ein- und ausblenden .............................................................................. 491

9.4.3 Titelleiste dynamisch verändern ..................................................................... 493

9.5 Das Ereignis »Form_AfterInsert« ................................................................................. 494

9.5.1 Reaktion auf die Anlage eines neuen Satzes .............................................. 494

9.6 Das Ereignis »Form_BeforeInsert« .............................................................................. 496

9.6.1 Felder automatisch vorbelegen ...................................................................... 496

9.6.2 Eingabemöglichkeit beschränken .................................................................. 498

9.7 Das Ereignis »Form_BeforeUpdate« .......................................................................... 499

9.7.1 Rückfrage einholen .............................................................................................. 499

9.7.2 Eingaben prüfen ................................................................................................... 500

9.7.3 Eingabe in Formularfeld erzwingen .............................................................. 502

9.7.4 Letztes Änderungsdatum anzeigen ............................................................... 502

9.7.5 Alle Änderungen am Datenbestand dokumentieren .............................. 503

9.7.6 Neuanlage verhindern ........................................................................................ 504

9.7.7 Keine Änderungen zulassen ............................................................................. 505

9.8 Das Ereignis »Form_AfterUpdate« .............................................................................. 505

9.9 Das Ereignis »Form_Delete« .......................................................................................... 505

9.9.1 Löschung verhindern bei Kriterium ............................................................... 505

9.9.2 Löschung mehrerer Datensätze verhindern ............................................... 506

9.10 Das Ereignis »Form_Dirty« ............................................................................................. 509

9.10.1 Änderungen sofort speichern .......................................................................... 509

9.11 Das Ereignis »BeforeDelConfirm« ............................................................................... 509

9.11.1 Die Standardlöschabfrage ersetzen ............................................................... 509

4286-8.book Seite 13 Dienstag, 6. Dezember 2016 9:52 09

Page 46: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Inhalt

14

9.12 Das Ereignis »Form_AfterDelConfirm« ..................................................................... 511

9.12.1 Löschung bestätigen ........................................................................................... 511

9.13 Das Ereignis »Form_Activate« ...................................................................................... 511

9.13.1 Formular maximieren ......................................................................................... 511

9.13.2 Fokus setzen .......................................................................................................... 512

9.13.3 Einen bestimmten Datensatz im Formular einstellen ............................ 512

9.13.4 Formular aktualisieren ....................................................................................... 513

9.14 Das Ereignis »Form_Deactivate« ................................................................................. 514

9.15 Das Ereignis »Form_Resize« ........................................................................................... 515

9.15.1 Steuerelemente automatisch anpassen ...................................................... 515

9.16 Das Ereignis »Form_DblClick« ....................................................................................... 517

9.16.1 Ein schneller Sprung zwischen den Ansichten ........................................... 517

9.16.2 Verkaufsraum-Formular erstellen .................................................................. 518

9.17 Das Ereignis »Click« ........................................................................................................... 520

9.17.1 Datum und Uhrzeit ausgeben ......................................................................... 520

9.18 Die Ereignisse »MouseDown« und »MouseUp« ................................................... 521

9.18.1 Welche Maustaste wurde gedrückt? ............................................................. 522

9.18.2 Auf Textfeld-Mausklick reagieren .................................................................. 523

9.18.3 Schaltflächenfarbe verändern ......................................................................... 524

9.18.4 Kontextmenü deaktivieren ............................................................................... 526

9.19 Das Ereignis »MouseMove« ........................................................................................... 526

9.19.1 Spezialeffekte für Textfelder einsetzen ....................................................... 526

9.20 Das Ereignis »Schaltfläche_Click« ............................................................................... 529

9.21 Die Ereignisse »GotFocus« und »LostFocus« .......................................................... 529

9.21.1 Formularfelder bei Eintritt färben .................................................................. 529

9.22 Die »Key«-Ereignisse ......................................................................................................... 530

9.22.1 Welche Tastaturtaste wurde gedrückt? ....................................................... 530

9.22.2 Datumsfelder automatisch erhöhen ............................................................. 532

9.22.3 Datum und Zeit einfügen .................................................................................. 533

9.23 Das Ereignis »Steuerelement_BeforeUpdate« ...................................................... 534

9.23.1 Ist Artikel x schon angelegt? ............................................................................ 535

9.23.2 Eingaben vervollständigen ............................................................................... 536

9.23.3 Postleitzahl prüfen .............................................................................................. 538

9.23.4 Löschen von Eingaben rückgängig machen ................................................ 539

9.24 Das Ereignis »Steuerelement_Enter« ........................................................................ 540

9.24.1 Vorabinformationen geben .............................................................................. 540

4286-8.book Seite 14 Dienstag, 6. Dezember 2016 9:52 09

Inhalt

15

9.25 Das Ereignis »Steuerelement_Exit« ........................................................................... 542

9.25.1 Nachfrage starten ................................................................................................ 542

9.26 Die Reihenfolge der Ereignisse ...................................................................................... 543

9.26.1 Die Reihenfolge beim Öffnen und Schließen eines Formulars ............. 543

9.26.2 Die Aktivierreihenfolge bei Steuerelementen ............................................ 544

9.26.3 Die Reihenfolge der Aktualisierungsereignisse ......................................... 545

9.26.4 Eine komplette Kette von Ereignissen .......................................................... 545

10 Access im Zusammenspiel mit Office 547

10.1 Textdateien im Zugriff von Access .............................................................................. 548

10.1.1 Textdateien speichern ........................................................................................ 548

10.1.2 Textdateien exportieren .................................................................................... 552

10.1.3 Code sichern .......................................................................................................... 554

10.1.4 Textdateien einlesen .......................................................................................... 556

10.2 Access im Zusammenspiel mit Word ......................................................................... 562

10.2.1 Die Adressendatenbank anlegen .................................................................... 567

10.2.2 Das Word-Dokument anlegen ......................................................................... 568

10.2.3 Den VBA-Code erfassen ..................................................................................... 569

10.3 Outlook und Access ............................................................................................................ 572

10.3.1 Adresstabelle in den Outlook-Kontaktordner übertragen ..................... 572

10.3.2 Den Kontaktorder in einer Access-Tabelle sichern ................................... 579

10.3.3 Termine in den Terminkalender übertragen .............................................. 582

10.3.4 Aufgaben in die Aufgabenliste von Outlook übertragen ....................... 586

10.3.5 E-Mails in einer Access-Datenbank speichern ........................................... 590

10.3.6 Sammel-E-Mails versenden .............................................................................. 592

10.4 Access im Duett mit Excel ............................................................................................... 594

10.4.1 Access-Tabelle in eine Excel-Tabelle umwandeln ..................................... 594

10.4.2 Excel-Daten in eine Access-Tabelle transferieren ..................................... 597

10.4.3 Automatisches Anlegen einer Access-Tabelle mit

anschließendem Import .................................................................................... 598

10.4.4 Aus Excel auf Access zugreifen ........................................................................ 603

10.4.5 Suchen, Anlegen, Ändern und Löschen ........................................................ 605

10.4.6 Benutzerverwaltung für Access-Anwendungen ....................................... 611

4286-8.book Seite 15 Dienstag, 6. Dezember 2016 9:52 09

Page 47: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Inhalt

16

11 API-Funktionen einsetzen 623

11.1 Das CD-ROM-Laufwerk ermitteln ................................................................................ 624

11.2 Den Namen des Anwenders ermitteln ...................................................................... 626

11.3 Das CD-ROM-Laufwerk bedienen ................................................................................ 627

11.4 Die Bildschirmauflösung ermitteln ............................................................................. 628

11.5 Ist ein externes Programm gestartet? ....................................................................... 629

11.6 Ein externes Programm aufrufen ................................................................................ 629

11.7 Wie lange läuft ein externes Programm? ................................................................ 630

11.8 Access schlafen schicken .................................................................................................. 632

11.9 Verzeichnisse erstellen ..................................................................................................... 632

11.10 Verzeichnis löschen ............................................................................................................ 633

11.11 Verzeichnisbaum anzeigen und auswerten ............................................................ 633

11.12 Die Windows-Version ermitteln ................................................................................... 635

11.13 Windows-Verzeichnis ermitteln ................................................................................... 636

11.14 Windows-Systemverzeichnis ermitteln .................................................................... 637

11.15 Das temporäre Verzeichnis ermitteln ........................................................................ 637

11.16 Das aktuelle Verzeichnis ermitteln ............................................................................. 638

11.17 Windows-Infobildschirm anzeigen ............................................................................. 639

11.18 Access-Verzeichnis ermitteln ......................................................................................... 639

11.19 Standardverzeichnis festlegen ...................................................................................... 640

11.20 Dateityp und Anwendung ermitteln .......................................................................... 640

11.21 Kurze Pfadnamen ermitteln ........................................................................................... 641

11.22 Den Computernamen ermitteln ................................................................................... 642

11.23 Texte mit API-Funktionen konvertieren ................................................................... 642

11.24 Die Zwischenablage löschen .......................................................................................... 643

11.25 Soundkarte checken .......................................................................................................... 644

11.26 Sounds per API-Funktion ausgeben ............................................................................ 644

11.27 PC piepsen lassen ................................................................................................................ 645

11.28 Tasten abfangen .................................................................................................................. 645

11.29 Dateien suchen ..................................................................................................................... 646

4286-8.book Seite 16 Dienstag, 6. Dezember 2016 9:52 09

Inhalt

17

11.30 Dateiinformationen auslesen ........................................................................................ 647

11.31 Ist die Internetverbindung aktiv? ................................................................................ 649

11.31.1 Eine E-Mail erstellen ........................................................................................... 650

11.32 Cursorposition in Pixel angeben .................................................................................. 651

11.32.1 Den Standarddrucker per API abfragen ........................................................ 651

11.32.2 Texte über MD5 verschlüsseln ........................................................................ 652

12 Datenbanken und Quellcode schützen und pflegen 655

12.1 Ihre Access-Lösung mithilfe von Startparametern absichern ......................... 655

12.2 Eine ACCDE erstellen .......................................................................................................... 657

12.3 Eine Datenbank über ein Kennwort schützen ....................................................... 657

12.3.1 Geschützte Datenbank per VBA öffnen (DAO) .......................................... 659

12.3.2 Geschützte Datenbank per VBA öffnen (ADO) .......................................... 660

12.3.3 Das Datenbankkennwort ändern ................................................................... 663

12.4 Quellcode schützen ............................................................................................................ 664

12.4.1 Ein Kennwort für die Anzeige des Quellcodes anlegen ........................... 665

12.5 Eine Datenbank komprimieren und reparieren .................................................... 665

12.5.1 Automatisches Komprimieren beim Schließen ......................................... 666

12.5.2 Automatisches Komprimieren einer externen Datenbank ................... 667

13 VBE-Programmierung in Access 669

13.1 Die VBE-Bibliothek einbinden ....................................................................................... 670

13.2 Weitere Bibliotheken einbinden oder entfernen ................................................. 672

13.3 Fehlerhafte Verweise ermitteln ................................................................................... 674

13.4 In den VBE springen ........................................................................................................... 675

13.5 Objektbibliotheken auslesen ......................................................................................... 675

13.6 Neue Module einfügen ..................................................................................................... 676

13.7 Modul(e) löschen ................................................................................................................. 677

13.8 Prozedur(en) löschen ......................................................................................................... 678

13.9 Einzelne Texte oder Befehle im Quellcode finden ............................................... 680

4286-8.book Seite 17 Dienstag, 6. Dezember 2016 9:52 09

Page 48: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Inhalt

18

13.10 Module mit Quellcode versorgen (Import) .............................................................. 683

13.11 Prozeduren sichern (Export) ........................................................................................... 686

13.12 Module drucken ................................................................................................................... 687

13.13 »Lines Of Code« ermitteln .............................................................................................. 689

13.14 Identifikation von VB-Komponenten ........................................................................ 690

13.15 Prozeduren auflisten ......................................................................................................... 691

13.16 Eine eigene VBA-Datenbank anlegen ........................................................................ 694

13.16.1 Der Zugriff auf einzelne Prozeduren ............................................................. 697

14 Anwendungen optimieren 701

14.1 Die automatische Leistungsanalyse ........................................................................... 701

14.1.1 Den richtigen Datentyp einsetzen ................................................................. 702

14.1.2 Programmleichen entfernen ............................................................................ 703

14.1.3 Variablen deklarieren ......................................................................................... 703

14.2 Datenbanken und Quellcode dokumentieren ....................................................... 703

14.3 Tabellen optimal anlegen ............................................................................................... 705

14.3.1 Primärschlüssel ..................................................................................................... 706

14.3.2 Indizes einsetzen .................................................................................................. 707

14.4 Die richtigen Befehle ......................................................................................................... 707

14.4.1 Objekte exakt deklarieren ................................................................................. 708

14.4.2 Variablen und Konstanten einsetzen ............................................................ 709

14.4.3 Berechnung und Bildschirmaktualisierung ausschalten ........................ 710

14.4.4 Warnmeldungen ausschalten ......................................................................... 710

15 Access und das Internet 711

15.1 E-Mail verschicken .............................................................................................................. 711

15.1.1 E-Mail über API-Funktion versenden ............................................................. 714

15.1.2 E-Mail mit Anhang versenden ......................................................................... 715

15.1.3 Dynamische Auswahl von E-Mail-Adressen ............................................... 716

15.1.4 E-Mail-Verteiler zusammenstellen ................................................................ 722

15.1.5 Posteingang auslesen ......................................................................................... 725

15.1.6 Alle gesendeten Mails dokumentieren ......................................................... 728

15.1.7 Dateianhänge speichern ................................................................................... 730

4286-8.book Seite 18 Dienstag, 6. Dezember 2016 9:52 09

Inhalt

19

15.2 Mini-Browser erstellen ..................................................................................................... 732

15.3 Tabellen in Internetformate transferieren .............................................................. 733

15.3.1 Tabelle als HTML-Datei abspeichern ............................................................. 734

15.3.2 Tabelle in ein XML-Dokument umwandeln ................................................ 735

16 Ribbons programmieren 737

16.1 Programmierung über ein XML-Markup .................................................................. 737

16.1.1 Die Tabelle »USysRibbons« anlegen .............................................................. 739

16.1.2 Ereignisprozedur erstellen ................................................................................ 741

16.1.3 Neue Menüleiste auswählen ........................................................................... 741

16.1.4 Dynamisches Laden ohne »USysRibbons« .................................................. 742

16.2 Weitere wichtige Quellen und Hilfen ........................................................................ 744

17 FAQ für Access-Entwickler 747

17.1 Wie hänge ich ein Feld an eine Tabelle an? ............................................................. 748

17.2 Wie verhindere ich, dass ein Formular geschlossen wird? ............................... 749

17.3 Wie frage ich alle Tabellen einer geschlossenen Datenbank ab? ................. 750

17.4 Wie lege ich in einem bestimmten Verzeichnis eine neue

Datenbank automatisch an? .......................................................................................... 752

17.5 Wie verlinke ich eine Tabelle aus einer anderen Datenbank? ........................ 754

17.6 Wie normiere ich Telefonnummern in Tabellen? ................................................. 755

17.7 Wie dokumentiere ich eine komplette Datenbank? ........................................... 757

17.8 Wie prüfe ich, ob eine bestimmte Tabelle existiert? .......................................... 759

17.9 Wie prüfe ich, ob ein bestimmtes Feld in einer Tabelle angelegt ist? ......... 760

17.10 Wie führe ich eine SQL-Abfrage auf eine andere Datenbank aus? ............... 761

17.11 Wie ermittele ich alle verfügbaren Drucker? ......................................................... 763

17.12 Wie schreibe ich bestimmte Feldinhalte einer Tabelle in eine Textdatei? 764

17.13 Wie transferiere ich eine Access-Tabelle nach Word? ........................................ 766

17.14 Wie lege ich eine Parameterabfrage automatisch an? ...................................... 768

17.15 Wie greife ich auf Tabelleneigenschaften einer Datenbank zu? ................... 770

4286-8.book Seite 19 Dienstag, 6. Dezember 2016 9:52 09

Page 49: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Inhalt

20

17.16 Wie frage ich die beiden Extremwerte einer Spalte in einer

Tabelle ab? ............................................................................................................................. 771

17.17 Wie führe ich eine Durchschnittsberechnung durch? ........................................ 772

17.18 Wie erstelle ich eine Unikatsliste? .............................................................................. 773

17.19 Wie ermittele ich die Gesamtsumme für ein Tabellenfeld? ............................ 775

17.20 Wie führe ich eine bedingte Summierung durch? ............................................... 776

17.21 Wie lese ich über eine ID den dazugehörigen Lieferanten aus? .................... 776

Index ........................................................................................................................................................ 779

4286-8.book Seite 20 Dienstag, 6. Dezember 2016 9:52 09

Page 50: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Index

779

Index

A

Abfrage

auflisten .................................................... 206, 285

durchführen ....................................................... 413

erstellen ............................................................... 326

exportieren ........................................................ 552

komplexere ........................................................ 328

programmieren ................................................ 324

Typ definieren ................................................... 297

versenden ........................................................... 712

Abfragetyp definieren ........................................ 297

Ablauf automatisieren .......................................... 25

acActiveDataObject ................................... 215, 241

acAdd .............................................................. 238, 299

acAll ........................................................................... 240

acAnywhere ............................................................ 240

acBoundObjectFrame ...................... 375, 457, 463

ACCDE-Datei .......................................................... 657

Access

beenden ........................................................ 83, 198

Benutzerverwaltung ...................................... 611

schlafen schicken ............................................. 632

Access-Datenbanken ermitteln ...................... 111

AccessObject ....................................... 203, 206, 208

Access-Tabelle

in Excel-Tabelle umwandeln ....................... 594

transferieren ...................................................... 766

Access-Version ausgeben ................................. 199

acCheckBox ......................................... 375, 457, 463

acCmdAboutMicrosoftAccess ........................... 83

acCmdAnswerWizard ............................................ 83

acCmdCloseWindow .............................................. 83

acCmdDatabaseProperties .................................. 83

acCmdDatasheetView ........................................ 518

acCmdDocMaximize ............................................. 83

acCmdDocMinimize .............................................. 83

acCmdExit .................................................................. 83

acCmdFind ................................................................. 83

acCmdNewDatabase .............................................. 83

acCmdOpenDatabase ............................................ 83

acCmdOpenTable .................................................... 83

acCmdOptions ......................................................... 83

acCmdPrint ................................................................ 83

acCmdQuickPrint .................................................... 83

acCmdRedo ................................................................ 83

acCmdRelationships .............................................. 83

acCmdReportHdrFtr .................................. 470, 477

acCmdSaveRecord ............................................... 368

acCmdSend ............................................................... 83

acCmdUndo .............................................................. 83

acComboBox ...................................... 375, 457, 463

acCommand .......................................................... 211

acCommandButton ......................... 375, 457, 463

acCopy ...................................................................... 367

Account .................................................................... 576

acCtrlMask .............................................................. 534

acCurrent ................................................................ 240

acCustomControl ............................. 376, 457, 463

acCut ......................................................................... 367

acDataAccessPage ............................................... 153

acDataForm ................................................... 215, 241

acDataFunction ........................................... 215, 241

acDataQuery ................................................. 215, 241

acDataReport ......................................................... 215

acDataServerView ...................................... 215, 241

acDataStoredProcedure ........................... 215, 241

acDataTable ................................................... 215, 241

acDelete ................................................................... 367

acDesign ............................................... 213, 378, 421

acDetail ................................................. 460, 464, 468

acDiagram ............................................................... 153

acDialog ................................................ 213, 379, 443

acDown .................................................................... 240

acDraft ............................................................. 209, 447

acEdit ............................................................... 238, 299

acEditMenu ............................................................ 367

acEntire .................................................................... 240

acExport ......................................................... 211, 596

acFile ......................................................................... 367

acFirst .................................................... 215, 242, 513

acFooter ................................................ 460, 464, 468

acForm .................................................. 152, 380, 486

acFormAdd .................................................... 213, 378

acFormatDAP ........................................................ 712

acFormatHTML .................................. 553, 712, 734

acFormatRTF ................................................. 553, 712

acFormatTXT ................... 553, 554, 712, 713, 722

acFormatXLS ................................................. 553, 712

acFormBar .............................................................. 367

acFormDS ................................................................ 213

acFormEdit .................................................... 213, 378

acFormPivotChart ............................................... 213

acFormPivotTable ............................................... 213

4286-8.book Seite 779 Dienstag, 6. Dezember 2016 9:52 09

Page 51: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Index

780

acFormPropertySettings ......................... 213, 379

acFormReadOnly ........................................ 213, 379

acGoTo ............................................................ 242, 513

acGroupLevel1Footer ...................... 460, 464, 468

acGroupLevel1Header .................... 460, 464, 468

acGroupLevel2Footer ...................... 460, 464, 468

acGroupLevel2Header .................... 460, 464, 468

acHeader ..................................... 460, 464, 468, 478

acHidden .............................................. 213, 379, 443

acHigh ............................................................. 209, 447

acIcon ..................................................... 213, 379, 443

acImage ................................................. 376, 457, 463

acImport ............................................... 211, 596, 597

acLabel ................................................... 376, 457, 463

acLast ...................................................... 242, 512, 513

acLeftButton .......................................................... 522

acLine ........................................... 376, 458, 463, 477

acLink .............................................................. 211, 596

acListBox .............................................. 376, 458, 463

acLow .............................................................. 209, 447

acMacro .................................................................... 153

acMedium ..................................................... 209, 447

acMenuVer20 ........................................................ 368

acMenuVer70 ........................................................ 368

acMiddleButton .................................................... 522

acModule .............................................. 153, 246, 448

acNew ........................................................................ 367

acNewRec ...................................................... 242, 513

acNext ............................................................. 242, 513

acNormal ....................................................... 213, 378

acObject ................................................................... 367

acObjectFrame ................................... 376, 458, 463

acObjectUpdate .................................................... 367

acObjectVerb .......................................................... 367

acOptionButton ................................. 376, 458, 463

acOptionGroup .................................. 376, 458, 463

acOutputForm ....................................................... 552

acOutputFunction ............................................... 552

acOutputModule ........................................ 552, 554

acOutputQuery ..................................................... 552

acOutputReport .................................................... 552

acOutputServerView .......................................... 552

acOutputStoredProcedure ............................... 552

acOutputTable ............................................. 552, 553

acPage .................................................... 376, 458, 463

acPageBreak ........................................ 376, 458, 464

acPageFooter .................... 460, 464, 468, 474, 477

acPageHeader .................. 460, 464, 468, 473, 477

acPages ........................................................... 209, 446

acPaste ...................................................................... 367

acPreview ................................................................ 213

acPrevious ..................................................... 242, 513

acPrintAll ....................................................... 209, 446

acQuery ........................................ 152, 246, 448, 449

acQuit ....................................................................... 199

acQuitPrompt ....................................................... 199

acQuitSaveAll ........................................................ 199

acQuitSaveNone ................................................... 199

acReadOnly ................................................... 238, 299

acRecordsMenu .................................................... 367

acRectangle ......................................... 376, 458, 464

acRefresh ................................................................. 367

acReport ...................................... 153, 448, 449, 462

acRightButton .............................................. 522, 526

acSaveForm ............................................................ 367

acSaveFormAs ....................................................... 367

acSaveNo ................................................................. 380

acSavePrompt ....................................................... 380

acSaveRecord ......................................................... 367

acSaveYes ............................................. 380, 422, 462

acSearchAll ............................................................. 240

acSelectAllRecords .............................................. 367

acSelection .................................................... 209, 446

acSelectRecord ...................................................... 367

acSendDataAccessPage ..................................... 712

acSendForm ........................................................... 712

acSendModule ............................................. 712, 713

acSendNoObject ................................................... 712

acSendQuery ......................................................... 712

acSendReport ........................................................ 712

acSendTable ........................................................... 712

acSpreadsheetTypeExcel10 ............................. 597

acSpreadsheetTypeExcel11 ............................. 597

acSpreadsheetTypeExcel12 ............................. 597

acSpreadsheetTypeExcel8 ................................ 597

acSpreadsheetTypeExcel9 ................................ 597

acStart ....................................................................... 240

acSubform ........................................... 376, 458, 464

acSysCmdAccessDir ............................................ 152

acSysCmdAccessVer ........................................... 152

acSysCmdClearStatus ........................................ 152

acSysCmdGetObjectState ........................ 152, 153

acSysCmdGetWorkgroupFile .......................... 152

acSysCmdIniFile ................................................... 152

acSysCmdInitMeter ................................... 152, 153

acSysCmdProfile .................................................. 152

acSysCmdRemoveMeter .................................. 152

acSysCmdRuntime .............................................. 152

acSysCmdSetStatus ............................................. 152

acSysCmdUpdateMeter .................................... 152

4286-8.book Seite 780 Dienstag, 6. Dezember 2016 9:52 09

Index

781

acTabCtl ................................................. 376, 458, 464

acTable ...................... 152, 246, 411, 448, 449, 486

acTextBox .................................. 376, 458, 464, 709

Activate .................................................................... 511

ActiveConnection ......... 260, 284, 291, 325, 326,

328, 600, 751, 770

ActiveExplorer ...................................................... 732

ActiveX Data Objects .......................................... 571

acToggleButton .................................. 376, 458, 464

ActualWork ............................................................. 589

acUndo ..................................................................... 367

acUp ........................................................................... 240

acViewDesign .................. 209, 238, 299, 301, 442

acViewNormal .......................... 209, 238, 299, 442

acViewPivotChart ...................................... 238, 299

acViewPivotTable ....................................... 238, 299

acViewPreview ......................... 209, 238, 299, 442

acWindowNormal ............................. 213, 379, 443

adBoolean ............................................................... 291

adChar ....................................................................... 291

adCmdTable ........................................................... 663

adCurrency ............................................................. 291

Add .................. 220, 372, 373, 421, 426, 432, 564,

565, 676, 677, 732, 762, 767

Add (Methode)

Konstanten ........................................................ 677

ADD COLUMN ............................................. 317, 318

ADD CONSTRAINT ............................................... 317

adDecimal ............................................................... 291

AddFromFile ................................................ 673, 685

AddFromGuid .............................................. 671, 672

AddIns ....................................................................... 672

AddItem ............................. 404, 428, 699, 700, 717

AddNew ............................. 281, 296, 496, 581, 592,

602, 609, 727, 730

adDouble ................................................................. 291

Address ..................................................................... 621

adLockBatchOptimistic ........................... 261, 663

adLockOptimistic ....................................... 261, 662

adLockPessimistic ..................................... 260, 662

adLockReadOnly ......................................... 260, 662

adLongVarChar ..................................................... 292

adModeRead .......................................................... 661

adModeReadWrite ............................................... 661

adModeShareDenyNone ................................... 661

adModeShareDenyRead .................................... 661

adModeShareDenyWrite .................................. 661

adModeShareExclusive ..................................... 661

adModeUnknown ................................................ 661

adModeWrite ......................................................... 661

adNumeric .............................................................. 291

ADODB.Connection ............................................ 258

adOpenDynamic ............................... 260, 617, 662

adOpenForwardOnly ...................... 260, 617, 661

adOpenKeyset .............................................. 260, 662

adOpenStatic ................................................ 260, 662

ADOX.Catalog ........................................................ 770

ADOX.Table ............................................................ 770

Adressendatenbank anlegen .......................... 567

Adresstabelle

nach Outlook transportieren ..................... 572

adSearchBackward .............................................. 261

adSearchForward ................................................. 261

adSeekAfter ............................................................ 266

adSeekAfterEQ ...................................................... 265

adSeekBefore ......................................................... 266

adSeekBeforeEQ ................................................... 266

adSeekFirstEQ ....................................................... 266

adSeekLastEQ ........................................................ 266

adSingle ................................................................... 291

adUseClient ............................................................ 274

advapi32.dll ............................................................ 626

adVarChar ............................................................... 291

adVarWChar ........................................................... 292

AfterUpdate .................................................... 79, 505

Aktion

widerrufen ......................................... 83, 535, 540

wiederholen .......................................................... 83

Aktionsabfrage ..................................................... 298

Aktivierreihenfolge

Steuerelemente ................................................ 544

Aktualisierungsabfrage ..................................... 298

Aktuelles Verzeichnis ermitteln .................... 638

AllDataAccessPages ................................... 109, 203

AllDatabaseDiagrams ........................................ 203

AllForms ...................................... 109, 203, 207, 486

AllFunctions ........................................................... 203

Allgemeine Einstellungen ................................... 50

AllMacros ....................................................... 109, 203

AllModules ................................. 109, 203, 204, 555

AllowBypassKey ................................................... 657

AllowValueListEdits ............................................ 411

AllQueries ...................................................... 203, 206

AllReports ............................................ 109, 203, 455

AllTables ......... 204, 205, 208, 312, 321, 735, 759

AllViews ................................................................... 204

ALTER TABLE ....................................... 312, 317, 318

An ............................................................................... 712

AND ........................................................................... 330

And ................................................................... 177, 273

Änderung

letzte abfragen ................................................. 232

4286-8.book Seite 781 Dienstag, 6. Dezember 2016 9:52 09

Page 52: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Index

782

Änderungendokumentieren ................................................. 503nicht zulassen ................................................... 505speichern ............................................................. 509

Änderungsdatumanzeigen .............................................................. 502ermitteln ............................................................. 283

Anfügeabfrage ....................................................... 298Ansicht

aktualisieren ..................................................... 313wechseln .............................................................. 517

Anwender abfragen ................................................ 40Anwendername ermitteln ..................... 197, 626Anzeige

mehrzeilige ........................................................ 339Append ............................... 291, 292, 328, 550, 749Application .................................. 40, 195, 196, 197,

199, 201, 474, 763Applikationsverzeichnis ermitteln .............. 152ApplyFilter .............................................................. 243Arabische Ziffern umwandeln ........................ 191Arbeitsgruppendateipfad ermitteln ............ 152Arbeitsmappe anlegen ....................................... 732Argument ................................................................... 92

benanntes .............................................................. 95Arithmetischer Operator .................................. 174Array .......................................................................... 163

abarbeiten ................................................ 158, 163auslesen ............................................................... 158definieren ............................................................ 165durchlaufen ....................................................... 163füllen ..................................................................... 163mehrdimensionales ........................................ 163programmieren ................................................ 162

Artikel bewerten ................................................... 271Artikelanlage kontrollieren ............................. 535Artikelname ändern ............................................ 301AS ...................................................................... 323, 332As ................................................................................... 91ASC ....................................... 170, 172, 274, 276, 534Asc .............................................................................. 188AtEndOfStream ........................................................ 74Attachments ................................................ 727, 730Attributes ................................................................ 286Aufgabenliste importieren .............................. 586Aufgaben-Objekt (Outlook)

erstellen ............................................................... 576Auflistungsobjekt ................................................ 108Aufzählungstypen .................................................. 63Ausgabeformat festlegen ................................. 552Auskommentierung .............................................. 35

aufheben ................................................................ 36

Auslaufartikel löschen ....................................... 280

Auswahlabfrage .................................................... 298

AutoAnpassen ....................................................... 565

AutoFitBehavior ................................................... 565

AutoStart ................................................................. 553

AVG ............................................................................ 773

Avg ............................................................................. 478

B

BackColor .......................... 146, 382, 450, 452, 530

Bcc .............................................................................. 712

Bedingte Formatierung durchführen ......... 362

Beep ........................................................................... 645

Befehl ausführen ..................................................... 82

BeforeUpdate ............................................... 499, 534

Bei Deaktivierung ................................................ 544

Bei Entladen ........................................................... 544

Bei Fokuserhalt ............................................ 544, 545

Bei Fokusverlust .......................................... 544, 545

Bei Geändert .......................................................... 545

Bei Laden ................................................................. 545

Bei Maustaste Ab ................................................. 545

Bei Maustaste ab .................................................. 414

Bei Taste ................................................................... 545

Bei Taste Auf .......................................................... 545

Bei Zeitgeber .......................................................... 423

Beim Hingehen ............................................ 544, 545

Beim Klicken .......................................................... 424

Beim Öffnen ........................................................... 545

Beim Schließen ..................................................... 544

Beim Verlassen ............................................ 544, 545

Benanntes Argument ............................................ 95

Benutzer abfragen .................................................. 40

Benutzerverwaltung

für Access ........................................................... 611

Berechnung ausschalten .................................. 710

Bereich

ausblenden ........................................................ 469

einblenden ......................................................... 469

vergrößern ......................................................... 467

Bereichsgröße festlegen ................................... 468

Bericht

Aufbau festlegen ............................................. 440

aufrufen .............................................................. 208

ausgeben ............................................................ 449

bearbeiten .......................................................... 442

drucken ...................................................... 209, 446

Elemente auflisten .......................................... 456

entwerfen ........................................................... 441

erstellen ............................................................... 461

4286-8.book Seite 782 Dienstag, 6. Dezember 2016 9:52 09

Index

783

Bericht (Forts.)

exportieren ........................................................ 552

formatieren ........................................................ 449

Formatierungsmöglichkeiten .................... 452

identifizieren ..................................................... 454

kopieren .............................................................. 447

maximiert anzeigen ....................................... 443

mit Diagramm .................................................. 440

mit Vorauswahl ............................................... 444

mit Zusammenfassung ................................. 440

öffnen ......................................................... 442, 443

schließen ................................................... 455, 462

umbenennen ..................................................... 447

versenden ........................................................... 712

vollautomatisch erstellen ............................ 465

zählen ................................................................... 455

Berichtsart

definieren ............................................................ 439

ermitteln ............................................................. 456

Berichtsaufbau festlegen .................................. 440

Berichtselemente auflisten .............................. 456

Berichtserstellung

vollautomatische ............................................ 465

Berichtssektion ansprechen ............................ 460

Berichtstyp

definieren ............................................................ 439

ermitteln ............................................................. 456

Beschriftung festlegen ....................................... 478

Bestände zusammenführen ............................ 330

Bezeichnungsfeld einsetzen ............................ 396

Bibliothek

einbinden ............................................................ 672

entfernen ............................................................ 672

Bildlaufleiste setzen ............................................ 354

Bildschirmaktualisierung

ausschalten .............................................. 209, 710

einschalten ......................................................... 209

Bildschirmauflösung ermitteln ..................... 628

Binary ........................................................................ 550

Birthday ................................................................... 576

BIT .............................................................................. 314

Block

auskommentieren .............................................. 35

Blocksyntax ............................................................... 96

Body ........................................................ 584, 589, 594

BOF ............................................................................. 269

Bookmark ............................................. 278, 513, 571

Boolean ................................................... 58, 536, 537

BusinessAddressCity .......................................... 576

BusinessAddressPostalCode ............................ 576

BusinessAddressState ........................................ 576

BusinessAddressStreet ...................................... 576

BusinessFaxNumber .......................................... 576

BusinessTelephoneNumber ............................ 576

Button ...................................................................... 522

ByRef ............................................................................ 93

Byte ............................................................................... 58

ByVal ..................................................................... 72, 93

C

Cancel .............. 506, 507, 536, 539, 540, 543, 750

Caption ............................... 394, 422, 429, 493, 534

festlegen ............................................................. 478

Case ........................................................................... 102

Case Else ......................................................... 103, 620

Catalog ............................... 284, 290, 326, 600, 751

Categories ...................................................... 584, 589

CBool ................................................................ 150, 151

Cbool ......................................................................... 151

CByte ......................................................................... 150

Cc ................................................................................ 712

CCar ........................................................................... 151

CCur ........................................................................... 150

CDate ............................................................... 150, 154

CDbl .................................................................. 150, 154

CDec .......................................................................... 150

CD-ROM-Laufwerk

bedienen ............................................................. 627

ermitteln ............................................................. 624

Cell .................................................................... 565, 767

Cells ........................................................................... 602

CHARACTER ........................................................... 314

CharLower ............................................................... 642

CharUpper .............................................................. 642

CHDIR .......................................................................... 26

ChDir ......................................................................... 219

CHDRIVE .................................................................... 26

Choose ...................................................................... 148

Chr .......................................................... 339, 541, 684

Chr(13) ...................................................................... 125

CInt ............................................................................ 150

Clear ....................................................... 220, 431, 605

Click .................. 426, 428, 518, 520, 521, 522, 529

CLng .......................................................................... 150

Close ......... 74, 119, 165, 170, 173, 266, 267, 269,

296, 321, 380, 455, 462, 483, 485, 486,

487, 488, 496, 503, 552, 571, 603, 663,

688, 728, 730, 759, 767

CloseClipboard ...................................................... 644

CloseCurrentDatabase .............................. 198, 214

4286-8.book Seite 783 Dienstag, 6. Dezember 2016 9:52 09

Page 53: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Index

784

Code ........................................................................... 555schrittweise durchlaufen ................................. 45sichern .................................................................. 554

CodeData ....................................................... 207, 208Code-Fenster

anpassen ................................................................ 49anzeigen ................................................................. 43teilen ................................................................. 39, 43

CodeModule ........................................................... 700CodePanes ............................................................... 672Codezeilen

zählen in Modul ............................................... 689zählen in Prozedur .......................................... 680

Column ........................................................... 286, 291Columns ......................................................... 288, 291Command ............................................................... 328CommandBars ...................................................... 672CommandText ......................... 325, 326, 328, 763CompactDatabase ................................................ 668Complete ................................................................. 589Computerinformationen anzeigen .............. 223Computername ermitteln ................................ 642Connection ... 170, 260, 267, 549, 606, 660, 661ConnectionString ................................................. 260context ..................................................................... 337Control ..................................................................... 111ControlTipText ...................................................... 387ControlType ..................... 374, 382, 385, 387, 413CopyFile ................................................................... 232CopyFromRecordset ................................. 605, 622CopyObject ................................ 246, 447, 448, 449Count ..... 115, 229, 288, 381, 421, 455, 727, 730Countdown programmieren ........................... 487CountOfDeclarationLines ................................. 691CountOfLines ................... 684, 689, 690, 691, 700Create ........................................................................ 753CREATE INDEX ................................... 313, 318, 319CREATE TABLE ....... 312, 313, 319, 325, 727, 729CreateField .............................................................. 749CreateForm ................................................... 199, 200CreateItem ................................. 576, 578, 584, 589CreateObject .......... 183, 223, 225, 226, 231, 234,

372, 562, 564, 575, 594, 601,

659, 732, 762, 767CreateReport ....................................... 461, 463, 466CreateReportControl .... 462, 463, 473, 474, 477CreateShortcut ...................................................... 226criteria ...................................................................... 261CSng ........................................................................... 151CStr ............................................................................. 151CSV-Datei ................................................................. 548Currency ..................................................................... 59

CurrentDb ...... 127, 162, 196, 485, 749, 758, 775

CurrentProject ..... 109, 134, 165, 167, 170, 196,

267, 325, 486, 549, 564, 727, 730

CurrentUser ........................................... 40, 197, 474

CurrentX .................................................................. 452

CursorLoaction ..................................................... 274

Cursorposition ermitteln ................................. 651

CursorType .................................................... 617, 661

festlegen ............................................................. 260

D

Date ........................................ 59, 473, 502, 521, 532

DateAdd ................................................................... 139

DateCreated ........... 205, 233, 283, 291, 294, 770

DateDiff ................................................................... 139

Datei

Existenz prüfen ................................................ 179

löschen ................................................................ 132

suchen ........................................................ 219, 646

Verfügbarkeit prüfen ..................................... 180

zählen (Verzeichnis) ....................................... 178

Dateianhang speichern ..................................... 730

Dateiendung

suchen ................................................................. 116

Dateiendung prüfen ........................................... 123

Dateiexistenz

prüfen .................................................................. 179

Dateiinformationen auslesen ........................ 647

Dateiname

ausgeben ............................................................ 113

sammeln ............................................................. 113

Dateinummer ....................................................... 550

Dateityp

ermitteln ............................................................. 640

Dateiverfügbarkeit

prüfen .................................................................. 180

Dateizugriff

festlegen ................................................................ 72

DateLastAccessed ................................................ 233

DateLastModified ....................................... 233, 294

DateModified ..................................... 205, 291, 770

Daten

drucken .................................................................. 83

entfernen ............................................................ 326

prüfen .................................................................. 100

zusammenführen ........................................... 321

Datenbank

anlegen ................................................................... 83

automatisch anlegen .................................... 752

dokumentieren ............................. 293, 703, 757

4286-8.book Seite 784 Dienstag, 6. Dezember 2016 9:52 09

Index

785

Datenbank (Forts.)

ermitteln ............................................................. 127

geschützte, öffnen (ADO) ............................. 660

geschützte, öffnen (DAO) ............................. 659

öffnen ................................................................... 256

schließen ............................................................. 198

sichern .................................................................. 231

suchen .................................................................. 293

Vorhandensein prüfen .................................. 340

zählen ................................................................... 115

Datenbankeigenschaften anzeigen ................. 83

Datenbank-Fenster

maximieren .......................................................... 83

minimieren ........................................................... 83

Datenbankinformationen erhalten ............. 196

Datenbankkennwort ändern (DAO) ............. 663

Datenbankname ermitteln ................................. 39

Datenbankobjektstatus abfragen .................. 152

Datenblattansicht aktivieren .......................... 518

Datendefinitionsabfrage durchführen ....... 312

Datenfeld

anlegen ................................................................... 48

löschen ................................................................. 318

Datenformat festlegen ....................................... 553

Datenpuffer auslesen ............................................ 74

Datensatz

aktivieren .................................................. 279, 513

aktualisieren ..................................................... 491

anlegen ................................................................ 581

ansteuern .................................................. 240, 512

duplizieren ......................................................... 369

ersten aktivieren .................................... 242, 513

ersten ermitteln ............................................... 498

filtern .................................................................... 272

hinzufügen ............................................... 281, 296

klonen .................................................................. 490

kopieren .............................................................. 490

letzten aktivieren ......................... 242, 270, 513

letzten ermitteln .............................................. 497

löschen ....................................................... 279, 370

nächsten aktivieren ........................................ 242

neuer ..................................................................... 542

positionieren ..................................................... 242

sortieren .............................................................. 273

suchen ..................................... 239, 261, 369, 498

vorherigen aktivieren .................................... 242

zählen ............................. 165, 202, 276, 485, 498

Datensatzmarkierer anzeigen ........................ 354

Daten-Tips

automatische ....................................................... 50

Datentyp

überwachen ....................................................... 396

umwandeln .............................................. 150, 154

Datenzugriffsseite versenden ........................ 712

DatePart ............................................................ 67, 138

DateSerial ................................................................ 184

DATETIME ............................................................... 314

Datum

einfügen ........................................... 471, 520, 533

zerlegen ............................................................... 184

Datumsangabe

formatieren ....................................................... 141

umwandeln ....................................................... 154

Datumsberechnung ........................................... 139

Datumsfeld erhöhen .......................................... 532

Datumsformat-Konstanten einsetzen .......... 65

Datumsteil extrahieren .................................... 138

Datumswert überprüfen .................................. 159

DAvg ................................................................. 201, 498

DBEngine ................................................................ 659

DblClick ........................................................... 428, 432

DCount ............................... 202, 498, 499, 767, 777

Debug.Print ....... 74, 76, 106, 111, 113, 119, 129,

158, 165, 173, 250, 252, 456, 578,

752, 757, 772, 773, 775

DECIMAL ................................................................. 314

Decimal ....................................................................... 59

Declare ..................................................................... 625

DefaultTableBehavior ........................................ 565

DefBool ....................................................................... 62

DefByte ....................................................................... 62

DefCur ......................................................................... 62

DefDate ....................................................................... 62

DefDbl ......................................................................... 62

DefinedSize ................................................... 286, 292

Definition

automatisch Einzug vergrößern .................. 50

automatische Daten-Tips ............................... 50

automatische Quickinfo ................................. 50

automatische Syntaxüberprüfung ............. 49

Dropdown-Feld Objekt ..................................... 43

Dropdown-Feld Prozedur ............................... 43

Eigenschaften ...................................................... 27

Elemente automatisch auflisten ................. 50

Ereignisse .............................................................. 27

Methoden .............................................................. 27

Objekte ................................................................... 27

DefInt ........................................................................... 62

DefLng ......................................................................... 62

DefObj ......................................................................... 62

DefSng ......................................................................... 62

4286-8.book Seite 785 Dienstag, 6. Dezember 2016 9:52 09

Page 54: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Index

786

DefStr ........................................................................... 62DefType ................................................................ 62, 63DefVar .......................................................................... 62DELETE ............................................................ 307, 308Delete .............. 279, 281, 292, 293, 586, 611, 679DELETE * ................................................................... 326DeleteLines ............................................................. 680DeleteObject ................................................. 339, 411DESC .................................... 170, 256, 274, 276, 323Detailbereich .......................................................... 440Detailbericht ausführen .................................... 440DeviceName ................................................. 197, 763DFirst ......................................................................... 498Diagramm einfügen ........................................... 433Diagramm-Assistent ........................................... 433Dialog \»Drucken\« anzeigen ............................ 83Dialog \»Öffnen\« anzeigen ............................... 83Dialog \»Optionen\« anzeigen .......................... 83Dialog anzeigen ....................................................... 97Dim ............................................................................... 55Dir ...................................... 70, 71, 72, 116, 133, 135,

180, 296, 340, 428, 753Direktfenster

abfragen ................................................................. 44editieren .............................................................. 129einblenden ............................................................. 44füllen ..................................................................... 129testen ....................................................................... 44

Direkthilfe .................................................................. 83Dir-Konstante ........................................................... 70Dirty ................................................................. 505, 509DisplayAsHyperlink ............................................ 395DLast .......................................................................... 497DLookup .................. 391, 392, 498, 536, 537, 777DMax ............................................................... 202, 498DMin ............................................................... 202, 498Do Until ...................................... 114, 173, 594, 757,

765, 767, 773, 775Do Until ... Loop .................................................... 113Do While ... Loop ......................................... 115, 116DoCmd .................... 207, 208, 209, 211, 214, 237,

243, 247, 442, 552, 754DoEvents ................................................................. 631Dokumenteigenschaft

auslesen ............................................................... 183ermitteln ............................................................. 181

DoMenuItem ............................................... 366, 368Double ......................................................................... 59Drag & Drop ausschalten ..................................... 50DriveLetter .............................................................. 231Drives ........................................................................ 231DriveType ................................................................ 231

DROP COLUMN ........................................... 317, 318

DROP CONSTRAINT ............................................ 317

DROP INDEX ................................................. 313, 320

DROP TABLE .................................................. 313, 321

Druckdialog anzeigen ........................................... 83

Drucker

installierte Drucker ermitteln .................... 197

verfügbare ermitteln ..................................... 763

Druckkopien festlegen ...................................... 209

Druckqualität

festlegen ............................................................. 209

DStDEv ..................................................................... 498

DSum ..................................................... 201, 498, 775

DueDate ................................................................... 589

Duration .................................................................. 584

Durchschnitt errechnen ................................... 201

Durchschnittsberechnung erstellen ............ 772

DVar .......................................................................... 498

dwMajorVersion .................................................. 636

dwMinorVersion .................................................. 636

dwPlatformId ........................................................ 636

DZ ............................................................................... 179

E

Echo .................................................................. 209, 735

Edit .................................................................... 581, 757

Eigene Funktion programmieren ................. 178

Eigenschaften anzeigen ....................................... 36

Eigenschaften-Fenster einblenden ................. 29

Einfügeposition festlegen ................................ 565

Eingabe

automatisch durchführen ........................... 389

erfassen ............................................................... 342

erzwingen .................................................. 316, 502

prüfen ........................................................... 98, 500

umwandeln .......................................................... 98

vervollständigen ............................................. 536

widerrufen ......................................................... 499

Eingabelänge überprüfen ................................. 396

Eingabemaske programmieren ..................... 340

Eingabemöglichkeit beschränken ................ 498

Einzug

automatisch vergrößern ................................. 50

vergrößern ............................................................ 34

verkleinern ............................................................ 34

Element automatisch auflisten ........................ 50

ElseIf ............................................................................. 97

E-Mail

dokumentieren ................................................ 728

erstellen ............................................................... 650

4286-8.book Seite 786 Dienstag, 6. Dezember 2016 9:52 09

Index

787

E-Mail (Forts.)

mit Anhang versenden .................................. 715

verschicken ........................................................ 711

versenden (API) ................................................ 714

Email1Address ...................................................... 576

E-Mail-Adresse

austauschen ...................................................... 683

dynamisch auswählen .................................. 716

prüfen ................................................................... 120

E-Mail-Aktion starten ......................................... 494

E-Mail-Dialog öffnen ............................................. 83

E-Mail-Objekt (Outlook) erstellen ................. 576

E-Mail-Verteiler zusammenstellen ............... 722

Enabled ..................................................................... 387

End ............................................................................. 584

End Function ............................................................. 91

End Sub ................................................................ 30, 86

End With .................................................................. 115

Entwicklungsumgebung aufrufen .. 26, 28, 672

Entwurfsqualität drucken ................................ 209

Enum-Anweisung ................................................... 63

EnumNetworkDrives .......................................... 229

Environ .................................... 45, 48, 483, 753, 754

EOF ............................ 119, 249, 261, 266, 269, 551,

571, 663, 724, 757, 765

Ereignis

Activate ............................................................... 543

AfterInsert .......................................................... 494

AfterUpdate ....................................................... 545

BeforeDelConfirm ........................................... 509

BeforeUpdate ....................... 536, 538, 539, 545

Change ................................................................. 545

Click ...................................................................... 520

Close ........................................................... 486, 544

Current ................................................................. 543

Deactivate .......................................................... 544

Enter ........................................ 540, 541, 544, 545

Exit ........................................... 529, 542, 544, 545

Form_Activate ........................................ 511, 513

Form_AfterDelConfirm ................................. 511

Form_AfterInsert ............................................. 494

Form_AfterUpdate ......................................... 505

Form_BeforeInsert .......................................... 496

Form_BeforeUpdate ................... 499, 500, 502,

504, 505

Form_Close .............................................. 485, 486

Form_Current ................................................... 490

Form_DblClick .................................................. 517

Form_Deactivate ............................................. 514

Form_Delete ............................................ 505, 506

Form_Dirty ........................................................ 509

Ereignis (Forts.)

Form_Load ........................................................ 488

Form_Resize ...................................................... 515

GotFocus .......................................... 529, 544, 545

KeyDown ......................................... 530, 532, 545

KeyPress .............................................................. 545

KeyUp ......................................................... 530, 545

Load ............................................................. 543, 545

LostFocus ......................................... 529, 544, 545

MouseDown ................................... 521, 524, 526

MouseMove .............................................. 526, 527

MouseUp ................................................... 521, 524

Open ............................................................ 543, 545

OpenForm .......................................................... 488

Resize ................................................................... 543

Schaltfläche_Click .......................................... 529

Steuerelement_BeforeUpdate ................... 534

Steuerelement_Enter ..................................... 540

Steuerelement_Exit ........................................ 542

Unload ................................................................. 544

Ereignisreihenfolge abstimmen .................... 543

Erstellungsdatum

abfragen ............................................................. 232

ermitteln ............................................................. 283

Erster Datensatz

aktivieren ........................................................... 513

ermitteln ............................................................. 498

Etiketten erstellen ............................................... 445

Etikettenbericht

starten ................................................................. 440

Euro-Konvertierung durchführen ................ 414

Excel-Daten

in Access-Tabelle transferieren ................. 597

Excel-Session starten ......................................... 372

Excel-Verzeichnis ermitteln ............................ 639

Execute .............................. 270, 271, 325, 326, 773

Exemplare sortieren ........................................... 209

Exit .......................................................... 527, 540, 542

Exit Do ............................................................. 113, 115

Exit For ..................................................................... 106

Exit Function ......................................................... 188

Exit Sub ............................................. 88, 97, 341, 485

Exklusivmodus ..................................................... 658

Export .............................................................. 687, 688

Abfrage ................................................................ 552

Bericht ................................................................. 552

Formular ............................................................. 552

Funktion ............................................................. 552

Modul ................................................................... 552

Prozedur ............................................................. 552

Tabelle ................................................................. 552

4286-8.book Seite 787 Dienstag, 6. Dezember 2016 9:52 09

Page 55: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Index

788

Exportdatei öffnen .............................................. 553

ExportXML .............................................................. 735

Externes Programm starten ............................ 629

Extremwerte abfragen ....................................... 771

F

False .............................................................................. 96

Farbfunktionen einsetzen ................................ 145

FastLaserPrinting ................................................. 447

Fehler abfangen .................................................... 100

Fehlerhafter Verweis ermitteln ...................... 674

Fehlermeldung formatieren ............................... 41

Feld

ausblenden ......................................................... 491

einblenden .......................................................... 491

initialisieren ...................................................... 302

vorbelegen .......................................................... 496

Felddatentyp ermitteln ..................................... 288

Felddefinition auslesen ..................................... 287

Feldinhalt

auslesen ............................................................... 261

in Textdatei schreiben ................................... 764

Fenster

maximieren ....................................................... 210

schließen ................................................................ 83

verankern .............................................................. 52

Fields ............................................ 761, 765, 767, 775

FileDialog .................................... 217, 219, 220, 221

FileName .................................................................. 428

FileObject ................................................................. 220

FileSystemObject ............ 74, 113, 183, 221, 229,

231, 232, 234, 765

FillColor .................................................................... 452

FillStyle ..................................................................... 452

Filter .......................................................................... 273

einstellen ............................................................. 220

Filterkriterium

angeben ............................................................... 243

einstellen ............................................................. 243

FilterName .............................................................. 443

Filters ........................................................................ 220

Find ......... 261, 262, 267, 571, 680, 681, 682, 696

FindExecutable ........................................... 640, 641

FindFirst ................................................................... 581

FindFirstFile ........................................................... 649

FindRecord .............................................................. 239

FindWindow ........................................................... 629

firstdayofweek .......................................................... 68

FirstName ................................................................ 576

Fix ............................................................................... 149

Fokus setzen ................................................. 483, 512

FontBold ......................................................... 452, 525

FontItalic ................................................................. 452

FontName ............................................ 451, 452, 478

FontSize .......................................................... 452, 478

FontUnderline ...................................................... 452

For ... Next ........................ 173, 193, 343, 578, 586,

592, 602, 605, 754, 758

For Append ............................................................. 503

For Each .......................................................... 217, 220

For Each ... Next .... 108, 109, 111, 234, 751, 763

For Each ... Next-Schleife anwenden ............ 108

For Each...Next ...................................................... 111

For Output .............................................................. 759

For...Next ................................................................. 105

ForAppending .......................................................... 73

ForeColor .............................................. 146, 452, 525

Form .......................................................................... 421

Form_Load .................................................... 425, 431

Form_Unload ........................................................ 750

Format ... 141, 142, 170, 201, 423, 449, 727, 730

FormatDateTime .................................................... 65

Formatierung

bedingte .............................................................. 362

FormatNumber .................................................... 230

Forms ........................................................................ 108

Formular

aktualisieren ............................................ 491, 513

anlegen ................................................................ 199

aufrufen ..................................................... 212, 378

Breite ermitteln ................................................ 515

Daten verknüpfen ........................................... 200

einrichten ........................................................... 482

Ende aktivieren ................................................ 513

erstellen ............................................................... 343

Existenz prüfen ................................................ 207

exportieren ........................................................ 552

maximieren ....................................................... 511

nächsten Datensatz aktivieren ................. 513

öffnen .......................................................... 153, 207

schließen .................................................... 485, 486

Schließen verhindern ..................................... 749

vergrößern ......................................................... 512

Formularbericht ausführen ............................ 440

Formularbeschriftung bestimmen .............. 353

Formularbreite ermitteln ................................. 515

Formulardarstellung bearbeiten ...................... 51

Formulardaten verknüpfen ............................ 200

Formularende aktivieren ................................. 513

Formularexistenz prüfen ................................. 207

4286-8.book Seite 788 Dienstag, 6. Dezember 2016 9:52 09

Index

789

Formularfeld

bearbeiten .......................................................... 350

färben ................................................................... 529

markieren ........................................................... 351

Formularinhalt drucken ................................... 371

Formularnamen

ausgeben ............................................................. 108

ermitteln ............................................................. 109

ForReading .......................................................... 73, 74

ForWriting .................................................................. 73

Frachtkosten

Mittelwertsberechnung ................................ 201

Summe ermitteln ............................................. 201

Wert ermitteln .................................................. 202

Frachtkostensumme ermitteln ...................... 201

Frachtkostenwert ermitteln ............................ 202

FreeSpace ................................................................. 229

FROM ............................................................... 306, 311

Füllfarbe festlegen ............................................... 452

Füllmuster festlegen ........................................... 452

FullName ................................................................. 183

FullPath .................................................................... 675

Function-Prozeduren ............................................ 90

Funktion

beenden ............................................................... 188

einsetzen ............................................................. 118

exportieren ........................................................ 552

selbst schreiben ................................................ 178

G

Ganzzahliger Wert extrahieren ...................... 149

GDI32.dll .................................................................. 625

Gesamtsumme ermitteln ................................. 775

Gesamttext teilen ................................................ 130

Geschützte Datenbank

öffnen (ADO) ..................................................... 660

öffnen (DAO) ..................................................... 659

GetAttr .................................................................. 71, 72

GetClipboardData ................................................ 644

GetCommandLine ............................................... 639

GetComputerName ............................................. 642

GetCurrentDirectory .......................................... 638

GetCursorPos ......................................................... 651

GetDefaultFolder ..................... 586, 592, 727, 730

GetDrive ................................................................... 230

GetDriveName ...................................................... 230

GetDriveType ......................................................... 626

Laufwerksindizes ............................................. 626

GetExitCodeProcess .................................. 630, 631

GetFolder ....................................................... 113, 234

GetLogicalDriveStrings ..................................... 625

GetObject .......................... 562, 571, 601, 727, 730

GetProfileString ................................................... 651

GetShortPathName .................................... 641, 642

GetString .............................................. 250, 252, 619

GetSystemDirectory ........................................... 637

GetTempPath ........................................................ 637

GetUserName ........................................................ 626

GetVersionEx ........................................................ 635

GetWindowsDirectory ....................................... 638

GotFocus ........................................................ 529, 530

GoTo .......................................................................... 100

GoToRecord ........................................ 240, 241, 512

Großbuchstabe umwandeln .............................. 98

GUID .......................................................................... 671

Gültigkeitsprüfung

Verweise .............................................................. 674

H

Haltepunkt

ausschalten .......................................................... 34

einfügen ................................................................. 34

setzen ...................................................................... 34

Hauptversionsnummer festlegen ................ 671

Height ....................................................................... 468

helpfile ..................................................................... 337

Hilfsmittel nutzen .................................................. 33

Hintergrundfarbe festlegen ............................ 452

Höchstwert festlegen ......................................... 107

Hotkey ...................................................................... 226

Hour .......................................................................... 144

HTML-Datei speichern ...................................... 734

Hyperlink integrieren ........................................ 428

I

Icons .......................................................................... 431

IDENTITY ................................................................. 325

If .................................................................................. 539

IIF ............................................................. 101, 102, 618

IIF-Verzweigung einsetzen .............................. 101

IMAGE ...................................................................... 314

ImageList ................................................................. 431

imageMso ............................................................... 745

Importdatei festlegen ........................................ 561

Index ................................................................ 265, 291

einfügen .............................................................. 313

einsetzen ............................................................. 707

löschen ................................................................ 313

Infodialog aufrufen ................................................ 83

4286-8.book Seite 789 Dienstag, 6. Dezember 2016 9:52 09

Page 56: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Index

790

Informationen anzeigen ................................... 339Input .......................................................................... 550InputBox ............. 97, 98, 260, 340, 341, 343, 571

verwenden .......................................................... 340INSERT INTO ................................................. 304, 306InsertLines .............................................................. 680Installierte Drucker ermitteln ........................ 197InStr ........................... 113, 120, 121, 124, 168, 185InStrRev ...................................... 121, 123, 124, 127Int ............................................................................... 149INTEGER ................................................................... 314Integer ............................................ 58, 59, 60, 72, 80Integrierte Dialoge einsetzen .......................... 215InternetGetConnectedState ............................ 650Internetseite prüfen ........................................... 124Internetverbindung überprüfen ................... 649Intervall ....................................................................... 67INTO ........................................................................... 311IsArray ................................................... 101, 157, 158IsBroken ................................................................... 674IsDate ..................................................... 100, 101, 159IsEmpty .......................................................... 101, 159IsError ....................................................................... 101IsLoaded ...................................... 109, 205, 321, 486IsNull .................................. 101, 156, 160, 502, 532,

536, 537, 539, 542, 724IsNumeric ...................................... 98, 100, 101, 396IsObject .......................................................... 101, 161ItemData ........................................................ 410, 722ItemProperties ...................................................... 578Items ......................................................................... 586ItemsSelected ........................................................ 409

J

JOIN ............................................................................ 621Join ............................................................................. 130Journaleintrag (Outlook) erstellen ................ 576

K

Kennwortschutz festlegen ............................... 657Kernel32.dll ............................................................ 625KeyCode ................................................................... 534KeyDown ....................................................... 530, 533Key-Ereignis ........................................................... 530KeyPress ......................................................... 395, 396Keys ........................................................................... 291Kill ........................................................... 132, 668, 688Klassen-ID festlegen ........................................... 671Kombinationsfeldliste programmieren ..... 398Kommentar erstellen ............................................ 35

Komplexere Abfrage programmieren ........ 328

Konstante

anzeigen ......................................................... 37, 83

definieren .............................................................. 65

einsetzen ............................................................. 709

verwenden ............................................................ 64

Zugriffsart festlegen ......................................... 72

Konstantenzugriffsart festlegen ...................... 72

Kontaktobjekt (Outlook) erstellen ................ 576

Kontextmenü

abschalten ......................................................... 526

deaktivieren ...................................................... 526

Kontrollkästchen

aktivieren ........................................................... 411

initialisieren ...................................................... 413

Konvertierung

HTML ................................................................... 553

RTF ........................................................................ 553

TXT ........................................................................ 553

XLS ........................................................................ 553

Kostenstelle prüfen ............................................ 537

Kreuztabellenabfrage ......................................... 298

Kurzer Pfadname ermitteln ............................ 641

L

Lagerbestand

kontrollieren ..................................................... 329

manipulieren .................................................... 266

LastName ................................................................ 576

Laufwerk

anzeigen ............................................................. 229

auswerten .......................................................... 229

Buchstabe ermitteln ...................................... 231

mappen ............................................................... 227

Typ ermitteln .................................................... 231

wechseln ................................................................ 26

Laufwerksbuchstabe ermitteln ...................... 231

Laufwerkstyp ermitteln .................................... 231

LBound ..................................................................... 158

LCase .................................................................. 99, 642

Leerzeichen entfernen ...................................... 131

Left ....................................... 125, 126, 396, 627, 724

LEFT JOIN ................................................................. 621

Leistungsanalyse durchführen ...................... 701

Len .................... 123, 126, 156, 180, 188, 396, 724

Lesezeichen

aufheben ................................................................ 39

einsetzen ............................................................. 278

setzen ...................................................................... 39

zum nächsten springen ................................... 39

4286-8.book Seite 790 Dienstag, 6. Dezember 2016 9:52 09

Index

791

Letzte Änderung abfragen ................................ 232

Letzter Datensatz

aktivieren ............................................................ 513

ermitteln ............................................................. 497

Letzter Zugriff abfragen ..................................... 232

Lib ............................................................................... 625

Liefertermin errechnen ..................................... 100

LIKE ............................................................................ 245

Line Input ................................................................ 119

Lines Of Code ermitteln .................................... 689

ListCount ....................................................... 406, 489

Listeneintrag

demarkieren ...................................................... 408

löschen ................................................................. 406

mit Aktionen ausstatten .............................. 409

Listenfeld

bestücken ............................................................ 428

einfügen .............................................................. 404

füllen .................................................. 404, 488, 699

programmieren ................................................ 404

Listenfeldeintrag

auslesen ............................................................... 406

löschen ................................................................. 406

zählen ................................................................... 406

ListIndex ............................ 406, 409, 410, 696, 722

ListView .................................................................... 431

Load ................................................................. 488, 698

LoadCustomUI ...................................................... 743

LoadRibbons .......................................................... 743

Location ................................................................... 584

Lock ............................................................................ 550

Lock Read Write .................................................... 550

Lock Write ............................................................... 550

Locked ....................................................................... 388

LockNavigationPane ........................................... 214

LockType ........................................................ 260, 662

Logischer Operator .............................................. 177

Lokal-Fenster einblenden .................................... 48

Long ....................................................................... 59, 80

Löschabfrage .......................................................... 298

ausführen ........................................................... 307

ersetzen ............................................................... 509

Löschrückfrage einholen .................................. 338

Löschung

bestätigen ........................................................... 511

rückgängig machen ....................................... 539

verhindern .......................................................... 505

Löschweitergabe ................................................... 308

LostFocus ....................................................... 529, 530

lpResult .................................................................... 641

LTrim ......................................................................... 131

M

Mail dokumentieren .......................................... 728Mail-Anhang speichern ..................................... 730MailItem .................................................................. 592MainWindow ......................................................... 675MapNetworkDrive ............................................... 228Markierung drucken .......................................... 209Maßeinheit festlegen ......................................... 451Maustastenklick

abfangen ............................................................ 522auf Textfeld ....................................................... 523

MAX ........................................................................... 771Max ............................................................................ 478Maximalwert ermitteln ........................... 255, 498Maximize ............................................. 210, 443, 512mciSendString ...................................................... 627Me ........................................................... 385, 405, 484Media-Player-Steuerelement .......................... 426Mehrdimensionales Array ............................... 163Mehrfachauswahl einstellen ........................... 407Mehrfach-Index

hinzufügen ......................................................... 317löschen ................................................................ 317

Mehrwertsteuer errechnen ............................. 341Mehrzeilige Meldung erzeugen ..................... 541Mehrzeiliges Textfeld füllen ........................... 541Meldung

anzeigen ................................................................ 31mehrzeilige ........................................................ 541

Menübefehl ausführen .................. 210, 366, 518Methode anzeigen .................................................. 36Mid ....................................... 123, 125, 127, 188, 626MIN ............................................................................ 771Min ............................................................................ 478Mini-Browser basteln ......................................... 732Minimalwert ermitteln ..................................... 498MinMaxSchaltflächen anzeigen .................... 354Minute ...................................................................... 144Mitarbeiter hinzufügen .................................... 304MkDir ..................................................... 133, 134, 632Mod .................................................................. 174, 450Mode ......................................................................... 661Modul

drucken ............................................................... 687einfügen ....................................................... 28, 676exportieren ........................................................ 552löschen ................................................................ 677versenden ........................................................... 712

Modus ....................................................................... 550Monat ermitteln .................................................. 137MONEY ..................................................................... 314

4286-8.book Seite 791 Dienstag, 6. Dezember 2016 9:52 09

Page 57: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Index

792

MONTH .................................................................... 622Month ............................................................. 137, 184MonthName ................................................. 134, 137MouseDown ................................................. 417, 521MouseMove ............................................................ 526MouseUp ................................................................. 521MoveFirst ................................................................ 279MoveLast ....................................................... 270, 279MoveNext .... 165, 168, 173, 249, 269, 272, 280,

281, 551, 566, 576, 663, 757, 765, 773MovePrevious ....................................................... 270MsgBox ..... 30, 31, 33, 37, 40, 97, 108, 129, 170,

184, 190, 336, 341, 499, 617, 640, 642, 690msoFileDialogFilePicker ................................... 217msoFileDialogFolderPicker .................... 217, 219msoFileDialogOpen ............................................ 217msoFileDialogSaveAs ......................................... 217Multifunktionsleiste programmieren ........ 739

N

Nach Aktualisierung ........................................... 545Nachfrage starten ................................................ 542Name .............. 127, 196, 200, 204, 205, 234, 283,

455, 456, 462, 473, 564, 578, 605, 668, 675, 699, 752, 758, 759, 763, 770

ändern ..................................................................... 29einfügen .............................................................. 471festlegen ................................................................. 29

Navigate ................................................................... 732Navigationsschaltflächen einblenden ........ 354Nebenversionsnummer festlegen ................ 671network .................................................................... 223Netzwerkressource abfragen ........................... 231Neuanlage verhindern ....................................... 504New .................................................................. 170, 586NewName ................................................................ 246NewPassword ........................................................ 664NewRecord ................................. 493, 496, 504, 542NoMatch .................................................................. 581Not ................................................................................. 98NOT NULL ................................................................ 316Nothing ...................... 75, 165, 217, 219, 221, 267,

285, 288, 552, 581, 603, 732Notiz-Objekt (Outlook) erstellen ................... 576Now ........................................ 91, 144, 631, 632, 684Number .................................................................... 181NumColumns ........................................................ 565NumericScale ......................................................... 286Numerische Zeichen extrahieren ................. 155Numerischer Wert extrahieren ...................... 155NumRows ................................................................ 565

O

Object ........................................................ 59, 688, 762

ObjectName ........................................................... 553

ObjectType .................................................... 449, 552

Objekt

abfragen ............................................................. 161

erstellen ............................................................... 225

hinzufügen ......................................................... 328

Objektbibliothek auslesen ............................... 675

Objektkatalog aufrufen ........................................ 26

Objektverknüpfung aufheben ....................... 285

Objektverweis aufheben .......................... 165, 552

Öffnen-Dialog anzeigen ....................................... 83

olAppointmentItem .................................. 576, 584

olContactItem ....................................................... 576

olDistributionListItem ...................................... 576

OldValue ......................................................... 386, 503

olFolderCalendar ................................................. 586

olFolderInbox .............................................. 592, 727

olFolderSentMail ................................................. 730

olJournalItem ........................................................ 576

olMailItem ..................................................... 576, 594

olNoteItem ............................................................. 576

olPostItem .............................................................. 576

olTaskItem ..................................................... 576, 589

Open ...... 119, 165, 170, 181, 249, 256, 260, 267,

482, 483, 488, 503, 549, 550, 564, 575,

594, 601, 604, 607, 661, 663, 727, 730,

759, 765, 767, 772, 773

open .......................................................................... 429

Open (Methode)

Aktualisierungskonstanten ........................ 601

OpenArgs ................................................................ 443

OpenClipboard ..................................................... 644

OpenDatabase .............................................. 659, 664

OpenForm .............. 153, 207, 213, 378, 421, 422

OpenProcess ................................................. 630, 631

OpenQuery .......................................... 299, 301, 413

OpenRecordset .................................. 724, 757, 775

OpenReport ................................ 209, 442, 445, 446

OpenTable ................................... 162, 238, 312, 410

OpenText ................................................................ 688

OpenTextFile .................................................. 74, 765

Operation ausführen ......................................... 208

Operator

arithmetischer .................................................. 174

einsetzen ............................................................. 174

logischer ............................................................. 177

Option Explicit ........................................... 57, 60, 63

4286-8.book Seite 792 Dienstag, 6. Dezember 2016 9:52 09

Index

793

Optional ...................................................................... 95

Optionen-Dialog

anzeigen ................................................................. 83

aufrufen .............................................................. 221

Options ..................................................................... 261

Optionsschaltfläche programmieren .......... 414

OR ..................................................................... 329, 332

Or ................................................................................ 273

ORDER BY ...... 253, 254, 256, 279, 323, 330, 332

Outlook-Mail-Eigenschaften ........................... 576

Outlook-Objekt erstellen .................................. 576

Output ...................................................................... 550

OutputFile ............................................................... 553

OutputFormat ....................................................... 553

OutputTo 449, 552, 554, 555, 566, 594, 687, 734

P

Pages ................................................................ 421, 474

Parameter ................................................................... 92

Parameterabfrage ................................................ 298

automatisch anlegen ..................................... 768

durchführen ....................................................... 333

erstellen ............................................................... 332

PARAMETERS ......................................................... 333

Parameterübergabe

als Referenz ........................................................... 93

als Wert ................................................................... 93

ParentCatalog .............................................. 286, 291

Path .................................................................. 134, 196

PC-Piepton erzeugen .......................................... 645

Pfadname ................................................................ 550

kurzer, ermitteln .............................................. 641

Port ............................................................................ 197

Posteingang auslesen ......................................... 725

Postleitzahl

ermitteln ............................................................. 104

prüfen ................................................................... 538

Präzision festlegen .............................................. 286

Precision .................................................................. 286

Preiserhöhung durchführen ........................... 267

Print ........................................................ 503, 551, 759

Printers ........................................................... 197, 763

PrintOut ...................................... 209, 371, 446, 688

Private ................................................................... 56, 88

Procedures .............................................................. 328

ProcOfLine .............................................................. 691

ProcOfLines ............................................................ 680

ProcStartLine ......................................................... 680

Programm

externes, starten .............................................. 629

Programmausführung abbrechen .................. 46

Programmierleistung messen ....................... 689

Programmlaufdauer messen .......................... 630

Programmstatus abfragen ............................... 629

Projekt-Fenster anpassen .................................... 49

Properties ............................................. 286, 291, 660

Provider ................................................................... 660

Prozedur ..................................................................... 85

anlegen ................................................................ 328

auflisten .............................................................. 691

aufspüren ........................................................... 680

ausführen .............................................................. 32

entfernen ............................................................ 678

exportieren ........................................................ 552

finden ................................................................... 680

löschen ................................................................ 678

sichern ................................................................. 686

starten .................................................................... 32

verlassen ............................................................. 341

Zeilen löschen ................................................... 680

Prozedur-Text anzeigen .................................... 696

Prozedurtext anzeigen ...................................... 696

Prozedurzeilen löschen ..................................... 680

Public ............................................................. 56, 57, 88

Q

QBColor ........................................................... 145, 453

Quellcode

Anzeige verhindern ........................................ 665

einfügen .............................................................. 683

importieren ....................................................... 683

schützen .............................................................. 664

Quellcodeanzeige verhindern ........................ 665

QueryTables ........................................................... 763

Quickinfo

automatische ...................................................... 50

hinzufügen ......................................................... 386

QuickInfo anzeigen ................................................ 36

Quit ................................................................... 198, 444

R

Rahmenart bestimmen ..................................... 354

Random ................................................................... 550

Range ............................................................... 565, 602

Read ........................................................................... 550

Read Write .............................................................. 550

ReadAll ........................................................................ 76

ReadLine ..................................................................... 74

ReceivedTime ........................................................ 727

4286-8.book Seite 793 Dienstag, 6. Dezember 2016 9:52 09

Page 58: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Index

794

Rechenfunktionen ............................................... 478Record ....................................................................... 215RecordCount ......... 165, 168, 173, 276, 277, 485,

490, 607, 609, 611, 617RecordsAffected .................................................... 271Recordset ...... 170, 249, 260, 265, 267, 549, 564,

571, 581, 592, 594, 606, 607, 661, 662, 765RecordsetClone ..................................................... 490RecordSource ...................................... 200, 462, 466Reddick-Namenskonvention ............................. 61ReDim .................................................... 165, 168, 173Reference ................................................................. 674Referenzielle Integrität ...................................... 308Refresh ................................................... 491, 514, 763RefreshDataBaseWindow ....................... 313, 727Registerelement

anlegen ................................................................ 418programmieren ................................................ 418

Registerkarteaktivieren ............................................................ 420einfügen .............................................................. 420löschen ................................................................. 422suchen .................................................................. 422umbenennen ..................................................... 420

ReihenfolgeAktualisierungsereignisse ............................ 545

RelatedColumn ..................................................... 286ReminderMinutesBeforeStart .............. 585, 589ReminderPlaySound ................................. 585, 589ReminderSet ................................................ 585, 589ReminderSoundFile ............................................ 589Remove ....................................... 422, 671, 674, 678RemoveDirectory ................................................. 633RemoveItem ........................................ 406, 407, 700RemoveNetworkDrive ....................................... 228Rename .......................................................... 246, 448Replace ..................................................................... 683ReplaceLine ............................................................. 683Report .......................................... 451, 456, 461, 473Report_Open .......................................................... 461ReportItem ............................................................. 592ReportName ........................................................... 442Reprint ...................................................................... 491Requery .......................................................... 491, 513RequiredAttendees .............................................. 584Resize ........................................................................ 515Restore ...................................................................... 200RGB ...................................... 381, 450, 452, 525, 530RGB (Funktion)

Farben .................................................................. 452Right ....................................................... 125, 126, 127

RmDir ....................................................................... 135Roman ...................................................................... 191Römische Ziffern umwandeln ....................... 189Round .................................................... 131, 132, 185RTrim ........................................................................ 131Rückfrage einholen ............................................. 499Rückschrittzeichen einfügen .......................... 125Rückwärtssuche ................................................... 261Run ............................................................................ 684RunCommand .......... 82, 83, 210, 211, 221, 368,

445, 446, 470, 477, 509, 518RunSQL ....................................... 301, 303, 312, 313,

318, 319, 727, 729

S

Satzlänge vorgeben ............................................. 551Save .................................................................. 226, 577SaveAs ...................................................................... 767SaveAsFile ............................................................... 732ScaleMode ............................................................... 451Schaltflächenfarbe verändern ........................ 524Schaltflächenklick ermitteln ........................... 337Schleife

aufbauen ............................................................... 74einsetzen ............................................................. 105

Schließen-Schaltfläche einblenden .............. 354Schriftart

einstellen ............................................................ 452festlegen ............................................................. 478

Schriftfarbe festlegen ................................ 452, 525Schriftformatierung anwenden .................... 450Schriftgröße

festlegen ............................................................. 452Schriftgröße festlegen ....................................... 452Schriftschnitt festlegen ............................ 452, 525SearchDirection .................................................... 261SearchForRecord ......................................... 214, 215SearchTreeForFile ................................................ 646Second ...................................................................... 144Section ............................................................. 460, 467Seek ........................................................ 262, 263, 265Seitenfuß ................................................................. 440Seitenkopf ............................................................... 440Seitenzahlen einfügen ....................................... 471Sektion

anzeigen ............................................................. 461ausblenden ........................................................ 461

SELECT ... 250, 252, 254, 271, 272, 279, 306, 311Select Case ............. 102, 103, 163, 188, 189, 289,

377, 418, 459, 511, 619

4286-8.book Seite 794 Dienstag, 6. Dezember 2016 9:52 09

Index

795

SELECT DISTINCT ................................................. 773

Selected ................................................. 409, 410, 490

SelectedItem ................................................ 426, 432

SelectedItems ..................................... 217, 219, 220

Selection .................................................................. 564

SelHeight ....................................................... 507, 508

SelLength ................................................................. 383

SelStart ..................................................................... 383

Send ........................................................................... 594

SenderName ........................................................... 727

SendObject .... 711, 712, 713, 715, 722, 724, 725

SentOn ...................................................................... 730

Serveransicht exportieren ............................... 552

SET .............................................................................. 302

Set ....................... 75, 109, 114, 165, 170, 223, 266,

267, 287, 374, 421, 451, 607, 682

SetAttr .......................................................................... 72

SetCurrentDirectoryA ........................................ 640

SetFocus ................................................ 484, 491, 512

SetSelection ............................................................ 681

Shared ....................................................................... 550

ShareName ............................................................. 231

Sheets ........................................................................ 602

Shell ............................................................. 76, 77, 631

ShellAbout .............................................................. 639

ShellExecute .............................. 428, 629, 650, 714

Shell-Konstante verwenden ............................... 76

Shift ................................................................. 522, 534

ShortcutMenu ....................................................... 526

Show ....................................................... 217, 219, 220

Single ............................................................................ 59

Size ............................................................................. 730

SizeToFit .................................................................. 467

SkipRows ................................................................. 261

SMALLINT ................................................................ 314

sndPlaySound32 ................................................... 644

Sonderzeichen

eliminieren ......................................................... 184

entfernen ............................................................ 184

Sort ............................. 170, 172, 273, 274, 728, 730

Sortierreihenfolge

bestimmen ......................................................... 286

festlegen .............................................................. 274

SortOrder ................................................................. 286

Sound ausgeben ................................................... 644

Soundkarte prüfen .............................................. 644

Source ............................................................. 260, 663

Spaltenlänge festlegen ....................................... 286

SpecialEffect ................................................. 418, 527

SpecialFolders .............................................. 225, 226

Speicher freigeben ............................................... 552

Speicherort festlegen ......................................... 553

Sperre ........................................................................ 550

Sperrverfahren einstellen ................................ 260

Spezialeffect ........................................................... 418

Spezialeffekt

einfügen (Textfeld) ......................................... 526

hinzufügen ......................................................... 413

Spezifikation angeben ....................................... 561

Split .................................................................. 128, 130

SQL-Abfrage ........................................................... 298

auf andere Datenbank .................................. 761

erstellen ............................................................... 301

SQL-Anweisung

absetzen ..................................................... 270, 325

ausführen .................................................. 271, 325

durchführen ...................................................... 325

festlegen ............................................................. 326

Standardabweichung ermitteln .................... 498

Standardansicht festlegen ............................... 353

Standarddrucker abfragen ............................... 651

Standardverzeichnis festlegen ....................... 640

Start ........................................................................... 584

StartDate ................................................................. 589

startFromScratch ................................................. 738

Statusanzeige

aktualisieren ..................................................... 152

entfernen ............................................................ 152

Statusleiste editieren ......................................... 152

Steuerelement

aktualisieren ..................................................... 491

ansprechen ........................................................ 111

ausblenden ........................................................ 520

automatisch anpassen ........................ 467, 515

einblenden ......................................................... 520

einfügen .............................................................. 349

einfügen (Bericht) ........................................... 462

identifizieren ............................................ 114, 373

zählen .................................................................. 115

Steuerelementkonstanten ............................... 457

Stop ............................................................................... 48

StrConv ................................................................ 78, 79

String .................................................................... 58, 59

Sub ......................................................................... 30, 86

ausführen .............................................................. 32

SubFolders .............................................................. 234

Subject ...................... 584, 586, 589, 594, 727, 730

Sub-Prozedur ............................................................ 86

Suchen-Fenster anzeigen .................................... 83

Suchkriterien festlegen ..................................... 261

Suchrichtung angeben ...................................... 261

Sum ........................................................................... 478

4286-8.book Seite 795 Dienstag, 6. Dezember 2016 9:52 09

Page 59: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Index

796

Summe

einfügen .............................................................. 474

ermitteln ............................................................. 201

Summierung

bedingte .............................................................. 776

Symbolleiste bearbeiten ...................................... 33

Syntaxprüfung

automatische ....................................................... 40

Syntaxüberprüfung

automatische ....................................................... 49

SysCmd ........................................................... 151, 153

Systemeinstellungen auslesen ....................... 753

Systemfeldmenü einblenden ......................... 354

Systemzeit ausgeben .......................................... 521

T

TabControl .............................................................. 421

TabelDefs ................................................................. 162

Tabelle

AccessObjects .................................................... 203

aktualisieren ..................................................... 267

ändern ........................................................ 312, 317

Anfang ermitteln ............................................. 269

anlegen ............................................. 289, 312, 313

Ansichtskonstanten ....................................... 221

arithmetische Operatoren ........................... 175

auflisten .............................................................. 285

Auflistungsobjekte .......................................... 109

aus anderer Datenbank verlinken ............ 754

auslesen ............................................................... 283

bearbeiten .......................................................... 237

Befehlskonstanten der Methode

DoMenuItem ................................................ 367

CursorType-Konstanten ............................... 661

Datentypen (SQL) ............................................ 314

DatePart .............................................................. 138

Datumskürzel ................................................... 142

drucken ................................................................ 371

Eigenschaftsnummern .................................. 182

Ende feststellen ................................................ 249

entfernen ............................................................ 321

Existenz prüfen ................................................. 759

exportieren ........................................................ 552

Farbindizes ......................................................... 145

Farbwerte ............................................................ 381

Feld auslesen ..................................................... 251

filtern .................................................................... 243

gängigste Datentypen ................................... 291

GoToRecord-Konstanten ............................. 512

Inhalt auslesen ................................................. 248

Tabelle (Forts.)

Inhalt suchen .................................................... 258

Konstanten für Steuerzeichen ................... 125

kopieren .............................................................. 246

LockType-Konstanten ................................... 662

logische Operatoren ...................................... 177

löschen ............................................. 292, 313, 339

nach Word überführen ................................. 562

öffnen ................................ 83, 162, 165, 238, 260

prüfen, ob Feld angelegt .............................. 760

Prüffunktionen ................................................ 100

Schaltflächen für MsgBox ........................... 336

Schaltflächenkonstanten ............................. 337

schließen .......................................... 165, 269, 571

sortieren ..................................................... 170, 730

Spezialeffekte .................................................... 528

Standardfarben über RGB ........................... 381

Steuerelemente für Formulare .................. 346

Steuerelementkonstanten ........................... 375

Steuerzeichen ................................................... 276

Struktur auslesen ............................................ 286

Struktur ermitteln ........................................... 283

Suchmethoden in Access .............................. 498

transferieren ..................................................... 211

Typ abfragen ..................................................... 285

übertragen ......................................................... 566

umbenennen ..................................................... 246

updaten ............................................................... 270

VBA-Konstanten .............................................. 125

Vergleichsoperatoren ........................... 103, 176

versenden ........................................................... 712

Tabellenanfang ermitteln ................................ 269

Tabellenende feststellen ................................... 249

Tabellenerstellungsabfrage ............................. 298

durchführen ...................................................... 310

Tabellenfeld

anhängen ........................................................... 748

auslesen .............................................................. 251

hinzufügen ......................................................... 317

löschen ....................................................... 317, 318

Tabellenindex

bestimmen ......................................................... 318

entfernen ............................................................ 320

Tabelleninhalt

auslesen .............................................................. 248

suchen ................................................................. 258

Tabellenstruktur

auslesen .............................................................. 286

ermitteln ............................................................. 283

Tabellentyp abfragen ......................................... 285

Tabellenverknüpfung prüfen ......................... 484

4286-8.book Seite 796 Dienstag, 6. Dezember 2016 9:52 09

Index

797

Table .......................................................................... 601

TableDef ......................................................... 758, 760

Tables ..................................................... 565, 767, 770

Tab-Schrittweite ...................................................... 50

Tabulatorzeichen einfügen .............................. 125

Tag ermitteln ......................................................... 183

Tagesdatum ermitteln ....................................... 521

TargetPath ............................................................... 226

Tasten abfangen ................................................... 645

Tastendruck auswerten ..................................... 530

Tastenkombinationen

einsetzen ................................................................ 41

programmieren ................................................ 225

Telefonnummerntabelle normieren ........... 755

TemplateFile .......................................................... 553

Temporäres Verzeichnis ermitteln .............. 637

Termin berechnen ............................................... 139

Termine übertragen ............................................ 582

Terminkalender-Eigenschaften ..................... 584

Terminobjekt (Outlook) erstellen ................. 576

TEXT ........................................................................... 314

Text ............................................................................ 565

austauschen ...................................................... 683

bereinigen ........................................................... 131

extrahieren ........................................................ 125

finden ................................................................... 680

konvertieren ............................................ 129, 642

kürzen .................................................................. 125

spitten .................................................................. 128

verschlüsseln ..................................................... 652

zerlegen ............................................................... 129

zusammensetzen ............................................. 129

Textdatei

abarbeiten .......................................................... 551

einlesen ...................................................... 118, 556

exportieren .............................................. 548, 552

importieren .............................................. 548, 556

lesen ..................................................... 76, 119, 550

öffnen ......................................................... 119, 549

schließen ................................................... 119, 552

schreiben ............................................................. 550

speichern ............................................................. 548

Text-E-Mail versenden ....................................... 712

Textfarbe festlegen ............................................. 452

Textfeld

aktivieren ............................................................ 387

ausblenden ......................................................... 393

begrenzen ........................................................... 395

einblenden .......................................................... 393

formatieren ........................................................ 381

mehrzeiliges, füllen ......................................... 541

Textfeld (Forts.)

positionieren ..................................................... 382

programmieren ............................................... 381

prüfen .................................................................. 532

sperren ................................................................. 387

überwachen ....................................................... 384

Textfeldhintergrund färben ............................ 530

Textfeldinhalte retten ....................................... 385

Textlänge bestimmen ....................................... 383

Textmarkierung anpassen ............................... 382

Textstartposition festlegen ............................. 383

Textteil extrahieren ................................... 121, 123

Textwert prüfen ................................................... 104

Textzeichen entfernen ...................................... 156

Time ................................................ 30, 144, 521, 534

Timer ........................................................................ 487

TimerInterval ............................................... 424, 487

TINYINT ................................................................... 314

Titelleiste anpassen ............................................ 493

title ............................................................................. 337

To ............................................................. 103, 594, 730

TOP ................................................................... 255, 256

TransferDatabase ................................................. 754

TransferSpreadsheet .............. 211, 595, 596, 597

TransferText ................................................. 556, 561

Transfertyp ............................................................. 561

TreeView ......................................................... 425, 426

programmieren ............................................... 425

Trennlinie einfügen ............................................ 474

Trim ........................................................................... 131

True .............................................................................. 96

Twips ......................................................................... 465

Type ........ 285, 288, 289, 291, 679, 693, 699, 751

TypeName .............................................................. 592

TypeText .................................................................. 564

U

Überschrift einfügen .......................................... 474

Überwachung hinzufügen .................................. 46

Überwachungsfenster einblenden .................. 46

UBound ........................................ 129, 158, 163, 173

UCase ........................................................ 98, 130, 642

Uhr integrieren ..................................................... 422

Undo ......................... 499, 504, 505, 536, 539, 540

Unikatsliste erstellen ......................................... 773

UNION ................................................... 253, 321, 332

UNION ALL ............................................................. 332

UNIQUE .................................................................... 320

UnRead ..................................................................... 727

Unterbrechen bei Fehlern ................................... 51

4286-8.book Seite 797 Dienstag, 6. Dezember 2016 9:52 09

Page 60: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Index

798

UPDATE .................................................................... 302

Update ..................... 267, 269, 270, 496, 581, 592,

602, 609, 662, 728, 730, 757

UpdateLinks ........................................................... 601

User32.dll ................................................................ 625

Username ................................................................ 483

V

Val ............................................................................... 155

Value ............................................................... 261, 420

VALUES ..................................................................... 304

Variable

benennen ............................................................... 54

Deklaration erzwingen .................................... 57

deklarieren ...................... 48, 54, 56, 60, 62, 703

einsetzen ...................................................... 54, 709

prüfen ...................................................................... 79

übergeben .............................................................. 72

überprüfen ......................................................... 157

Variablen prüfen ..................................................... 46

Variablendeklaration

erforderliche ......................................................... 49

erzwingen .............................................................. 57

Variablentyp auswählen ...................................... 58

Variablentypen verwenden ................................ 55

Variant .................................................................. 59, 60

Varianz feststellen ............................................... 498

VarType ................................................................ 79, 80

vbAbortRetryIgnore ............................................... 38

VBA-Datenbank

anlegen ................................................................ 694

erstellen ............................................................... 694

vbArray ........................................................................ 80

vbBack ............................................................. 125, 276

vbBoolean .................................................................. 80

vbByte .......................................................................... 80

vbCancel .................................................................. 510

vbCR ........................................................................... 276

vbCr ............................................................................ 125

vbCritical .................................................................... 38

vbCrLf ..................................................... 125, 276, 713

vbCurrency ................................................................ 80

vbDataObject ............................................................ 80

vbDate ......................................................................... 80

vbDecimal .................................................................. 80

vbDirectory ............................................................... 71

vbDouble .................................................................... 80

VBE

aktivieren .................................................. 671, 675

deaktivieren ....................................................... 671

VBE-Bibliothek einbinden ................................ 670

vbEmpty ..................................................................... 79

vbError ........................................................................ 80

vbExclamation ......................................................... 38

vbext_ct_ClassModule ...................................... 677

vbext_ct_MSForm .............................................. 677

vbext_ct_StdModule ......................................... 677

vbext_pt_StandAlone ....................................... 677

vbFirstFourDays ...................................................... 69

vbFirstFullWeek ...................................................... 69

vbFirstJan1 ................................................................ 69

vbFriday ...................................................................... 68

vbGeneralDate ......................................................... 66

vbHidden ................................................................... 71

vbHide ......................................................................... 76

vbInformation ......................................................... 38

vbInteger .................................................................... 80

VB-Komponenten identifizieren .................. 690

vbLf ............................................................ 32, 125, 276

vbLong ........................................................................ 80

vbLongDate ............................................................... 66

vbLongTime .............................................................. 66

vbLowerCase ............................................................. 78

vbMaximizedFocus ............................................... 76

vbMinimizedFocus ................................................ 76

vbMinimizedNoFocus .......................................... 76

vbMonday .................................................................. 68

vbNewLine .............................................................. 125

vbNormal ................................................................... 71

vbNormalFocus ....................................................... 76

vbNormalNoFocus ................................................. 76

vbNull .......................................................................... 79

vbNullChar ............................................................. 125

VbNullString .......................................................... 125

vbNullString ................................................. 473, 625

vbObject ..................................................................... 80

vbOKCancel ............................................................... 38

vbOKOnly .................................................................. 38

VBProjects ............................................................... 672

vbProperCase ........................................................... 78

vbQuestion ................................................................ 38

vbReadOnly ............................................................... 71

vbRetryCancel .......................................................... 39

vbSaturday ................................................................ 68

VbShortDate ............................................................. 66

vbShortTime ............................................................. 66

vbSingle ...................................................................... 80

vbString ...................................................................... 80

vbSunday ................................................................... 68

vbSystem .................................................................... 71

vbTab ............................................................... 125, 276

4286-8.book Seite 798 Dienstag, 6. Dezember 2016 9:52 09

Index

799

vbThursday ................................................................ 68

vbTuesday .................................................................. 68

vbUpperCase ............................................................. 78

vbUseSystem ..................................................... 68, 69

vbVariant .................................................................... 80

vbVolume ................................................................... 71

vbWednesday ........................................................... 68

vbYesNo ............................................................ 38, 133

vbYesNoCancel ........................................................ 38

Vergleichsoperator einsetzen ......................... 103

Vergleichsoperatoren einsetzen .................... 175

Verkaufsraum-Formular erstellen ................ 518

Verkettungsoperator einsetzen ..................... 176

Version ..................................................................... 199

Versionsnummer ermitteln ............................ 152

Verteilerliste (Outlook) erstellen ................... 576

Verweis

fehlerhafte Verweise ermitteln .................. 674

Verzeichnis

einstellen ............................................................. 218

entfernen ............................................................ 135

ermitteln ............................................................. 223

erstellen ..................................................... 133, 632

löschen ....................................................... 135, 633

temporäres, ermitteln ................................... 637

Verzeichnisbaum

anzeigen .............................................................. 633

auswerten ........................................................... 633

Verzeichnisstruktur auslesen ......................... 234

Verzweigung

verschachteln .................................................... 102

verwenden ............................................................. 95

View ........................................................................... 442

Visible ...................... 372, 373, 394, 461, 491, 520,

564, 601, 675, 762, 767

Visual-Basic-Editor anpassen ............................. 49

VolumeName ........................................................ 230

Vor Aktualisierung .............................................. 545

Vorabinformationen geben ............................. 540

Vorauswahl treffen .............................................. 212

Vorlagendateipfad angeben ............................ 553

Vorwärtssuche durchführen ........................... 261

W

Wagenrücklaufzeichen einfügen .................. 125

Warnmeldungen ausschalten ......................... 710

waveOutGetNumDevs ....................................... 644

wdAutoFitContent ............................................... 565

wdAutoFitFixed .................................................... 565

wdAutoFitWindow .............................................. 565

Website-Zugang

Icon erstellen ..................................................... 226

Weekday ......................................................... 136, 163

WeekdayName ............................................... 69, 136

nutzen ..................................................................... 69

Wert

ganzzahligen extrahieren ........................... 149

numerischer, extrahieren ............................ 155

WHERE .................... 302, 307, 311, 323, 329, 330,

332, 604, 617, 619, 621

WhereCondition ............................... 215, 443, 445

WindowMode ........................................................ 443

Windows .................................................................. 672

Windows-Infobildschirm anzeigen .............. 639

Windows-Systemverzeichnis ermitteln ..... 637

Windows-Version ermitteln ........................... 635

Windows-Verzeichnis ermitteln ................... 636

WindowWidth ....................................................... 515

With ............................................... 114, 115, 117, 451

Wochentag

einlesen ............................................................... 162

ermitteln ............................................................. 136

Word-Dokument anlegen ....................... 564, 568

Word-Session starten ......................................... 373

WorksheetFunction ............................................ 191

Workspace .............................................................. 659

Write ......................................................................... 550

WriteLine ................................................................. 765

WScript.Network .................................................. 228

X

XML-Format erstellen ........................................ 735

Y

YEAR .......................................................................... 622

Year ............................................................................ 184

Z

Zahl runden ............................................................ 132

Zahlenwert

prüfen .................................................................. 102

runden ................................................................. 131

Zählerstand ausgeben ........................................ 106

Zahlungstermin errechnen ............................. 100

Zeichenfolge

aufspüren ........................................................... 121

suchen ................................................................. 121

Zeichenlänge ermitteln ..................................... 123

4286-8.book Seite 799 Dienstag, 6. Dezember 2016 9:52 09

Page 61: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Index

800

Zeichenposition ermitteln ............................... 187

Zeilenvorschub erzeugen ................................. 125

Zeit einfügen ................................................ 520, 533

Zellengröße anpassen ........................................ 565

Zieltabelle bestimmen ....................................... 561

Zoom einstellen .................................................... 210

Zoom-Darstellung ............................................... 436

Zugriff

letzten abfragen ............................................... 232

Zugriffsmodus festlegen .................................. 550

Zustand abfragen .................................................... 95

Zweig einfügen ..................................................... 426

Zwischenablage

löschen ................................................................ 643

öffnen ................................................................... 644

schließen ............................................................. 644

Zyklus festlegen ................................................... 357

4286-8.book Seite 800 Dienstag, 6. Dezember 2016 9:52 09

Page 62: VBA mit Access – Das umfassende Handbuch - AWS · PDF fileLeseprobe Dieses Buch beantwortet alle Ihre Fragen zur VBA-Programmierung in Access: Abfragen, Formulare, Steuerelemente,

Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Sie dürfen sie gerne empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Bitte beachten Sie, dass der Funktionsumfang dieser Leseprobe sowie ihre Darstel-lung von der E-Book-Fassung des vorgestellten Buches abweichen können. Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nut-zungs- und Verwertungsrechte liegen beim Autor und beim Verlag.

Teilen Sie Ihre Leseerfahrung mit uns!

Bernd Held ist von Haus aus gelernter Informatiker und schreibt Bücher und Fachartikel. Zu seinen Spezial- gebieten zählen Excel, VBA-Programmierung, Access und allgemeine Office- und Tool-Themen. Er wurde von Microsoft mehrfach als MVP (Most Valuable Pro-fessional) für den Bereich Excel ausgezeichnet.

Bernd Held

VBA mit Access – Das umfassende Handbuch800 Seiten, gebunden, 2. Auflage 2016 49,90 Euro, ISBN 978-3-8362-4286-8

www.rheinwerk-verlag.de/4209

Wissen, wie’s geht.