PDF-Datei - created by Daniel Deckensattl in Switzerland (c)

Werbung
W14AccessMDB.Dotm
Winword - AddIn
Daniel Deckensattl
Adresserfassung mit Access-DB mit Word 2010
[email protected]
1
Add-In für die Adresserfassung mit Access-DB
1.1
Einleitung
Mit diesem AddIn erstellen wir eine neue leere Access-Datenbank für die Erfassung von Adressdaten,
welche dann für einen Serienbrief verwendet werden können. Anstatt Excel kann auch dieses AddIn mit
einer Access-Datenbank zum Einsatz kommen. Access wird hierbei nicht benötigt.
Aufgerufen wird dieses AddIn entweder über das
Wordmenü [Sendungen][Adressdialog] oder über
das Kontextmenü im Text. Der Dialog selbst ist
sehr intuitiv gehalten, sodass es im Prinzip nicht
viel zu erklären gibt.
Drücken Sie die Schaltfläche [Neuer Datensatz]
zusammen mit der Umschalttaste, dann werden
alle Eingabefelder für eine Neuerfassung gelöscht.
Wird eine neue DB erstellt, wird eine alte Datenbank auf dem Datenträger gelöscht und eine neue in dem Ordner erstellt, den wir
ausgewählt haben.
Bei der ersten Benutzung wird der Ordner-Auswahldialog angezeit, wo wir das
Verzeichnis der Datenbankablage angegeben können.
D:\Daten\Office\DDDot\VBA-Vorlagen\W14AccessMDB\W14AccessMDB_Doku.docx
29. Dezember 2014 – [ Seite 1 / 9 ]
Zusatztool für Word 2010
1.2
W14AccessMDB.Dotm (AddIn)
D.D. [2/9] - 29.12.14
Technische Beschreibung
Die Installation des AddIns ist ganz einfach, man kopiert die Vorlage W14AccessMDB.Dotm ins
STARTUP-Verzeichnis (C:\Users\BENUTZER\AppData\Roaming\Microsoft\Word\STARTUP) der OfficeInstallation des Anwenders und schon lässt sich dieses AddIn beim nächsten Neustart von Word benutzen.
Menüeinträge anpassen
Um diese Menüeinträge anzupassen, sprich das Kontextmenü und der Menübandaufruf zu verändern (zum Beispiel ein anderes Icon) benötigen wir das Gratis-Tool OfficeCustomUIEditorSetup.msi welches die XML-Datei in die W14AccessMDB.dotm-Datei integriert!
Makrobeschreibung
Das VBA-Projekt besteht aus drei Modulen, wovon das erste VBA-Makromodul [mdlAccessDB] nur die
Aufruf-Prozedur enthält (plus die Kontextmenü-Prozedur), die den Hauptdialog (frmAccessDB) zur Anzeige bringt. Alle nötigen Funktionen und Prozeduren befinden sich in den zwei Modulen (frmAccessDB und
clsAdresse).
In der frmAccessDB wird zu Beginn die Initialisierungs-Prozedur aufgerufen, in welcher der DB-Pfad aus
der Registry (VB and VBA Settings) gelesen wird. Fehlt dieser, was beim ersten Mal der Fall ist, erscheint
ein Verzeichnis-Auswahldialog über welchen wir das DB-Verzeichnis angeben in welcher dann die Datenbank gespeichert wird.
Am Schluss dieser Initialisierungsroutine wird dann geprüft, ob bei diesem Pfad auch eine Datenbank
Namens Adressen.mdb vorhanden ist wenn ja werden die Daten eingelesen und wenn nicht eine neue
erstellt.
Das Erstellen der DB geschieht in der Sub-Prozedur DatenbankErstellen(), wo sogleich eine Tabelle angelegt wird in welcher ein Musterdatensatz eingefügt wird (dieser kann selbstverständlich gelöscht werden).
Der weitere Ablauf ist mit Kommentaren soweit gut beschrieben,falls Sie die Datenbank um Felder erweitern möchten (muss auch in der Datenklasse ergänzt werden).
D:\Daten\Office\DDDot\VBA-Vorlagen\W14AccessMDB\W14AccessMDB_Doku.docx
29. Dezember 2014 – [ Seite 2 / 9 ]
Zusatztool für Word 2010
2
D.D. [3/9] - 29.12.14
Inhaltsverzeichnis
1
1.1
1.2
2
2.1
2.2
2.2.1
2.2.2
2.2.3
2.2.4
2.1
W14AccessMDB.Dotm (AddIn)
Add-In für die Adresserfassung mit Access-DB
Einleitung
Technische Beschreibung
Inhaltsverzeichnis
Updateinformationen
VBA-Makrocode
[VBA-Modul]: mdlAccessDB
[VBA-Formmodul]: frmAccessDB
[VBA-Klassenmodul]: ThisDocument
[VBA-Klassenmodul]: clsAdresse
1
1
2
3
3
4
4
4
8
8
Updateinformationen
Beschreibung der Anpassungen
Updatedatum
Projektdatei hochgeladen
29.12.2014
Inhaltsverzeichnis erstellt
29.12.2014
Grunddokumentation erstellt
29.12.2014
Programmcode eingefügt
29.12.2014
D:\Daten\Office\DDDot\VBA-Vorlagen\W14AccessMDB\W14AccessMDB_Doku.docx
29. Dezember 2014 – [ Seite 3 / 9 ]
Zusatztool für Word 2010
2.2
W14AccessMDB.Dotm (AddIn)
D.D. [4/9] - 29.12.14
VBA-Makrocode
2.2.1 [VBA-Modul]: mdlAccessDB
'/-------------------------------------------------------------------------------------------------'/ Autor:
D. Deckensattl
Erstelldatum: 29.12.14 ¦
'/ System:
Windows 7
MS-Winword 2010
Update:
29.12.14 ¦
'/
¦
'/ Zweck des AddIn:
Dieses Word-VBA-AddIn erstellt eine Accessdatenbank und bietet eine Ein¦
'/
gabemaske an, über welche die Adressen verwaltet werden können.
¦
'/
¦
'/
Dieses Projekt benötigt das Formmodul [frmAccessDB] und das Klassenmodul
¦
'/
[clsAdresse] und einen Verweis auf Microsoft ActiveX Data Objects 6.1 Lib- ¦
'/
rary. Aufgerufen wird das AddIn über das Wordmenu [Sendungen][Adressdialog].¦
'/-------------------------------------------------------------------------------------------------'/-- Tastenstatus ermitteln
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
'/-- Ordner-Anzeigedialog
Private Type BROWSEINFO
hwndOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpFn As Long
lParam As String
iImage As Long
End Type
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (ByRef lpbi As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Const MAX_PATH = 259
Private
Private
Private
Private
Const
Const
Const
Const
WM_USER As Long = &H400
BIF_RETURNONLYFSDIRS As Long = 1
BFFM_INITIALIZED As Long = 1
BFFM_SETSELECTION As Long = (WM_USER + 102)
Public Sub AccessAdressen(control As IRibbonControl)
AccessAdressenDialog
End Sub
' Wird vom Wordmenü aufgerufen
Public Sub AccessAdressenDialog()
frmAccessDB.Show 0
End Sub
'------------------------------------- Ordnerauswahl ---------------------------------------------Public Function GetFolderInternal(ByVal Caption As String, ByVal Default As String) As String
Dim BI As BROWSEINFO
Dim ListIdx As Long
Dim Path As String
With BI
.lpszTitle = Caption
.ulFlags = BIF_RETURNONLYFSDIRS
.lpFn = MakeFktnPtr(AddressOf BrowseCallbackProc)
.lParam = Default
End With
Path = String$(MAX_PATH + 1, vbNullChar)
ListIdx = SHBrowseForFolder(BI)
If SHGetPathFromIDList(ListIdx, Path) Then
GetFolderInternal = Left$(Path, Instr(Path, vbNullChar) - 1)
End If
CoTaskMemFree ListIdx
End Function
Public Function BrowseCallbackProc(ByVal hwnd As Long, ByVal Msg As Long, _
ByVal lParam As Long, ByVal lpData As Long) As Long
On Error Resume Next
If Msg = BFFM_INITIALIZED Then
SendMessage hwnd, BFFM_SETSELECTION, 1&, lpData
End If
End Function
Private Function MakeFktnPtr(ByVal FktnPtr As Long) As Long
MakeFktnPtr = FktnPtr
End Function
2.2.2 [VBA-Formmodul]: frm AccessDB
'/-------------------------------------------------------------------------------------------------'/ Autor:
D. Deckensattl
Erstelldatum: 29.12.14 ¦
'/ System:
Windows 7
MS-Winword 2010
Update:
29.12.14 ¦
'/
¦
'/ Zweck des AddIn:
Dieses Word-VBA-AddIn erstellt eine Accessdatenbank und bietet eine Ein¦
'/
gabemaske an, über welche die Adressen verwaltet werden können.
¦
'/
¦
D:\Daten\Office\DDDot\VBA-Vorlagen\W14AccessMDB\W14AccessMDB_Doku.docx
29. Dezember 2014 – [ Seite 4 / 9 ]
Zusatztool für Word 2010
W14AccessMDB.Dotm (AddIn)
D.D. [5/9] - 29.12.14
'/
Dieses Projekt benötigt das Makromodul [mdlAccessDB] und das Klassenmodul
¦
'/
[clsAdresse] und einen Verweis auf Microsoft ActiveX Data Objects 6.1 Lib- ¦
'/
rary. Aufgerufen wird das AddIn über das Wordmenu [Sendungen][Adressdialog].¦
'/
¦
'/
AdressId
Nebenstehende Felder kommen zum Einsatz. Existiert die Datenbank nicht
¦
'/
Anrede
wird eine neue DB angelegt mit dem Namen [Adressen.mdb] und In dem Ver¦
'/
Titel
zeichnis abgelegt, welches mit dem Ordnerdialog angegeben wurde. Wird
¦
'/
Vorname
kein Verzeichnis ausgewählt wird der aktuelle Vorlagenpfad verwender.
¦
'/
Nachname
¦
'/
Strasse
Per SQL-Befehl werden alle Datensätze sortiert ausgelesen und dann In
¦
'/
PLZ
Klassen verpackt und In ein Array verschoben [arrAdressen()].
¦
'/
Ort
¦
'/
Email
Der einmal ausgewählte Pfad wird In der Registry im VB And VBA Settings¦
'/
Telefon
Abschnitt niedergeschrieben [VBAccessMDB\AppCFG\DBPath] und bei jedem Start ¦
'/
Zusatz
neu eingelesen.
¦
'/
¦
'/-------------------------------------------------------------------------------------------------Const
Const
Const
Const
Const
dbVersion10
dbVersion11
dbVersion20
dbVersion30
dbVersion40
=
=
=
=
=
1
8
16
32
64
Private arrAdressen As Variant
Private strDBName
As String
Private Sub UserForm_Initialize()
' Dialogform wird initialisiert
strNewFolder = GetSetting("VBAccessMDB", "AppCFG", "DBPath") ' Pfad aus Registry lesen
If strNewFolder = "" Then
' Wenn nicht vorhanden dann
strExportOrdner = GetFolderInternal("Ordner auswählen", "C:\") ' Ornerauswahl-Dialog anzeigen
If strExportOrdner = "" Then
' Bei Abbruch Vorlagenpfad verwenden
strDBName = ActiveDocument.AttachedTemplate.Path & Application.PathSeparator & "Adressen.mdb"
SaveSetting "VBAccessMDB", "AppCFG", "DBPath", ActiveDocument.Path ' Pfad In Registry sichern
Else
SaveSetting "VBAccessMDB", "AppCFG", "DBPath", strExportOrdner ' Hier wurde ein Ordner ausgestrDBName = strExportOrdner & Application.PathSeparator & "Adressen.mdb" ' wählt (sichern)
End If
Else
strDBName = strNewFolder & Application.PathSeparator & "Adressen.mdb" ' Pfad aus Registry übernehmen
End If
If Dir(strDBName) <> "" Then
Daten
Else
DatenbankErstellen
End If
End Sub
' Prüfen ob DB In Ordner liegt, wenn ja
' Daten einlesen und anzeigen
Private Sub cmdDatensatzLoeschen_Click()
Dim objDBank As Object
Dim RSTABLE As Object
On Error GoTo Abbruch
' Das Löschen eines Datensatzes mit
' dem SQL-Befehl DELETE
' ansonsten Neuerstellung
Set objDBank = CreateObject("DAO.DBEngine.36").OpenDatabase(strDBName)
SSQLSELECT = "DELETE * From tbAdressen WHERE tbAdressen.AdressId = " & TextBox1.Text
objDBank.Execute (SSQLSELECT)
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox9.Text = ""
TextBox10.Text = ""
TextBox11.Text = ""
Daten
Abbruch:
If Not objDBank Is Nothing Then objDBank.Close
Set RSTABLE = Nothing
Set objDBank = Nothing
' SQL-Befehl ausführen
' Anzeigen im Dialog löschen
' Daten neu einlesen und anzeigen
' Am Ende DB wieder schliessen
' Setze die Objektvariablen auf Nothing
' Wenn ein Fehler auftritt gib ihn aus mit Fehlernummer und Beschreibung
If Err.Number <> 0 Then MsgBox "Error: " & Err.Number & " " & Err.Description
End Sub
Private Sub cmdDatenSpeichern_Click()
Dim objDBank As Object
Dim RSTABLE As Object
On Error GoTo Abbruch
' Ein Datensatz Updaten
Set objDBank = CreateObject("DAO.DBEngine.36").OpenDatabase(strDBName)
SSQLSELECT = "Select Anrede,Titel,Vorname,Nachname,Strasse,PLZ,Ort,Email,Telefon,Zusatz From "
SSQLSELECT = SSQLSELECT & "tbAdressen WHERE tbAdressen.AdressId = " & TextBox1.Text
Set RSTABLE = objDBank.OpenRecordset(SSQLSELECT)
RSTABLE.Edit
RSTABLE("Anrede") = TextBox2.Text
RSTABLE("Titel") = TextBox3.Text
RSTABLE("Vorname") = TextBox4.Text
RSTABLE("Nachname") = TextBox5.Text
RSTABLE("Strasse") = TextBox6.Text
RSTABLE("PLZ") = Val(TextBox7.Text)
RSTABLE("Ort") = TextBox8.Text
RSTABLE("Email") = TextBox9.Text
D:\Daten\Office\DDDot\VBA-Vorlagen\W14AccessMDB\W14AccessMDB_Doku.docx
' Zuerst Datensatz holen
' Werte abfüllen
29. Dezember 2014 – [ Seite 5 / 9 ]
Zusatztool für Word 2010
W14AccessMDB.Dotm (AddIn)
D.D. [6/9] - 29.12.14
RSTABLE("Telefon") = TextBox10.Text
RSTABLE("Zusatz") = TextBox11.Text
RSTABLE.Update
' und wieder In DB schreiben
Set cAdr = arrAdressen(ListBox1.ListIndex)
cAdr.AdressId = TextBox1.Text
cAdr.Anrede = TextBox2.Text
cAdr.Titel = TextBox3.Text
cAdr.Vorname = TextBox4.Text
cAdr.Nachname = TextBox5.Text
cAdr.Strasse = TextBox6.Text
cAdr.PLZ = TextBox7.Text
cAdr.Ort = TextBox8.Text
cAdr.Email = TextBox9.Text
cAdr.Telefon = TextBox10.Text
cAdr.Zusatz = TextBox11.Text
' Veränderte Daten auch in
' Array anpassen
Set arrAdressen(ListBox1.ListIndex) = cAdr
' Klasse wieder zurück In Array
Abbruch:
If Not objDBank Is Nothing Then objDBank.Close
Set RSTABLE = Nothing
Set objDBank = Nothing
' Setze die Objektvariablen auf Nothing
' Wenn ein Fehler auftritt gib ihn aus mit Fehlernummer und Beschreibung
If Err.Number <> 0 Then MsgBox "Error: " & Err.Number & " " & Err.Description
End Sub
Private Sub cmdNeuerDatensatz_Click()
Dim objDBank As Object
Dim RSTABLE As Object
On Error GoTo Abbruch
If TastenStatus(vbKeyShift) = True Then
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox9.Text = ""
TextBox10.Text = ""
TextBox11.Text = ""
Exit Sub
End If
' Neuer Datensatz anlegen
' Bei gehaltener Shifttaste
' werden Eingabefelder für
' Neueingabe gelöscht
Set objDBank = CreateObject("DAO.DBEngine.36").OpenDatabase(strDBName)
SSQLSELECT = "Select Max(AdressId) From tbAdressen"
' Letzte Adress-ID-Nummer ermitteln
Set RSTABLE = objDBank.OpenRecordset(SSQLSELECT)
intU = RSTABLE(0) + 1
If IsNull(intU) Then intU = 1
SSQLSELECT = "INSERT INTO [tbAdressen] (AdressId, Anrede, Titel, Vorname, Nachname, Strasse, PLZ, Ort, Email, Telefon, Zusatz) VALUES ( " & _
intU & ",'" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "','" & TextBox5.Text & "','" &
TextBox6.Text & "','" & _
TextBox7.Text & "','" & TextBox8.Text & "','" & TextBox9.Text & "','" & TextBox10.Text & "','" & TextBox11.Text & "')"
objDBank.Execute SSQLSELECT
' Neuer Datensatz hinzufügen
Daten
' Daten neue einlesen und anzeigen
For intZ = 0 To ListBox1.ListCount - 1
' Neuer Datensatz In Liste selektieren
If ListBox1.List(intZ) = TextBox5.Text & " " & TextBox4.Text Then ListBox1.ListIndex = intZ: Exit For
Next
Abbruch:
If Not objDBank Is Nothing Then objDBank.Close
Set RSTABLE = Nothing
Set objDBank = Nothing
' Setze die Objektvariablen auf Nothing
' Wenn ein Fehler auftritt gib ihn aus mit Fehlernummer und Beschreibung
If Err.Number <> 0 Then MsgBox "Error: " & Err.Number & " " & Err.Description
End Sub
Sub CreateNewMDB(FileName, Format)
' Erstellt eine leere Access-Datenbank
Dim Engine
Set Engine = CreateObject("DAO.DBEngine.36")
Engine.CreateDatabase FileName, ";LANGID=0x0409;CP=1252;COUNTRY=0", Format
'If Not Engine Is Nothing Then Engine.Close
Set Engine = Nothing
' Setze die Objektvariablen auf Nothing
End Sub
Sub DatenbankErstellen()
Dim objDBank As Object
Dim RSTABLE As Object
On Error GoTo Abbruch
' Datenbank neu erstellen
If Dir(strDBName) <> "" Then Kill strDBName
' Alte DB löschen wenn vorhanden
CreateNewMDB strDBName, dbVersion40
' Acccess 2000-DB wird erstellt
Set objDBank = CreateObject("DAO.DBEngine.36").OpenDatabase(strDBName) ' Felder nun erstellen
objDBank.Execute ("CREATE TABLE tbAdressen(" & _
"AdressId AUTOINCREMENT ," & _
"Anrede
VARCHAR(255) ," & _
"Titel
VARCHAR(255) ," & _
D:\Daten\Office\DDDot\VBA-Vorlagen\W14AccessMDB\W14AccessMDB_Doku.docx
29. Dezember 2014 – [ Seite 6 / 9 ]
W14AccessMDB.Dotm (AddIn)
Zusatztool für Word 2010
D.D. [7/9] - 29.12.14
"Vorname
VARCHAR(255) ," & _
"Nachname
VARCHAR(255) NOT NULL ," & _
"Strasse
VARCHAR(255) ," & _
"PLZ
Long ," & _
"Ort
VARCHAR(255) ," & _
"Email
VARCHAR(255) ," & _
"Telefon VARCHAR(255) ," & _
"Zusatz MEMO )")
SSQLSELECT
SSQLSELECT
SSQLSELECT
SSQLSELECT
=
=
=
=
"INSERT INTO
SSQLSELECT &
SSQLSELECT &
SSQLSELECT &
[tbAdressen] (AdressId, Anrede, Titel, Vorname, Nachname, Strasse, PLZ, Ort, "
"Email, Telefon, Zusatz) VALUES (" & "1" & ",'" & "Herr" & "','" & "" & "','"
"Hans" & "','" & "Mustermann" & "','" & "Am Weg 8" & "','" & "8400" & "','"
"Winterthur" & "','" & "[email protected]" & "','" & "052 222 22 22" & "','" & "Memofeld" & "')"
objDBank.Execute SSQLSELECT
' Ein Musterdatensatz einspielen
Abbruch:
If Not objDBank Is Nothing Then objDBank.Close
Set RSTABLE = Nothing
Set objDBank = Nothing
' Setze die Objektvariablen auf Nothing
' Wenn ein Fehler auftritt gib ihn aus mit Fehlernummer und Beschreibung
If Err.Number <> 0 Then MsgBox "Error: " & Err.Number & " " & Err.Description
Daten
' Datensatz einlesen
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End Sub
' und In Listbox selektieren
Private Sub cmdNeueDB_Click()
DatenbankErstellen
End Sub
Private Sub ListBox1_Click()
Dim cAdr As clsAdresse
Set cAdr = arrAdressen(ListBox1.ListIndex)
' Ein Klick auf die Adressnamen-Listbox
' liefert die dazugehörigen Felder
TextBox1.Text = cAdr.AdressId
TextBox2.Text = cAdr.Anrede
TextBox3.Text = cAdr.Titel
TextBox4.Text = cAdr.Vorname
TextBox5.Text = cAdr.Nachname
TextBox6.Text = cAdr.Strasse
TextBox7.Text = cAdr.PLZ
TextBox8.Text = cAdr.Ort
TextBox9.Text = cAdr.Email
TextBox10.Text = cAdr.Telefon
TextBox11.Text = cAdr.Zusatz
End Sub
Sub Daten()
Dim objDBank As Object
Dim RSTABLE As Object
Dim cAdr
As clsAdresse
' Daten sortiert holen und anzeigen
On Error GoTo Abbruch
If TastenStatus(vbKeyShift) = True Then Exit Sub
' Bei Shifttastendruck Sub verlassen
Set objDBank = CreateObject("DAO.DBEngine.36").OpenDatabase(strDBName)
SSQLSELECT = "Select Count(AdressId) From tbAdressen"
' Zuerst Anzahl der Datensätze ermitteln
Set RSTABLE = objDBank.OpenRecordset(SSQLSELECT)
intW = RSTABLE(0)
If intW = 0 Then GoTo Abbruch
ReDim arrAdressen(intW - 1)
' Bei keinem Datensatz DB wieder schliessen
SSQLSELECT = "Select * From tbAdressen ORDER BY Nachname"
' Sortierte Liste mit SQL anfordern
Set RSTABLE = objDBank.OpenRecordset(SSQLSELECT)
intR = RSTABLE.RecordCount
' dbOpenDynamic
' Funktioniert nicht?
intZ = 0
Do Until RSTABLE.EOF
Set cAdr = New clsAdresse
cAdr.AdressId = RSTABLE("AdressId")
cAdr.Anrede = RSTABLE("Anrede")
cAdr.Titel = RSTABLE("Titel")
cAdr.Vorname = RSTABLE("Vorname")
cAdr.Nachname = RSTABLE("Nachname")
cAdr.Strasse = RSTABLE("Strasse")
cAdr.PLZ = RSTABLE("PLZ")
cAdr.Ort = RSTABLE("Ort")
cAdr.Email = RSTABLE("Email")
cAdr.Telefon = RSTABLE("Telefon")
cAdr.Zusatz = RSTABLE("Zusatz")
Set arrAdressen(intZ) = cAdr
intZ = intZ + 1
RSTABLE.MoveNext
Loop
' Alle gefundenen Datensätze In Klassen
' speichern
' und In globales Array kopieren
Abbruch:
If Not objDBank Is Nothing Then objDBank.Close
Set RSTABLE = Nothing
Set objDBank = Nothing
' Setze die Objektvariablen auf Nothing
' Wenn ein Fehler auftritt gib ihn aus mit Fehlernummer und Beschreibung
If Err.Number <> 0 Then MsgBox "Error: " & Err.Number & " " & Err.Description
ListBox1.Clear
' Alte Daten In Listbox löschen
If intW = 0 Then Exit Sub
D:\Daten\Office\DDDot\VBA-Vorlagen\W14AccessMDB\W14AccessMDB_Doku.docx
29. Dezember 2014 – [ Seite 7 / 9 ]
W14AccessMDB.Dotm (AddIn)
Zusatztool für Word 2010
For intZ = 0 To UBound(arrAdressen)
Set cAdr = arrAdressen(intZ)
ListBox1.AddItem cAdr.Nachname & " " & cAdr.Vorname
Next
D.D. [8/9] - 29.12.14
' Alle Namen und Vornamen anzeigen
End Sub
Private Sub cmdAbbruch_Click()
Unload Me
End Sub
' Die Schaltfläche Abbrechen
' wurde ausgewählt
Private Sub imgDBPfad_Click()
strNewFolder = GetSetting("VBAccessMDB", "AppCFG", "DBPath")
strNewFolder = Iif(strNewFolder = "", "C:\", strNewFolder)
' Neuer Ordner für Adressen.mdb
' bestimmen
' Vorgabepfad aus Registry lesen!!!
strExportOrdner = GetFolderInternal("Ordner auswählen", strNewFolder) ' Ordner öffnen anzeigen
If strExportOrdner = "" Then
strDBName = ActiveDocument.AttachedTemplate.Path & Application.PathSeparator & "Adressen.mdb"
SaveSetting "VBAccessMDB", "AppCFG", "DBPath", ActiveDocument.Path
Else
SaveSetting "VBAccessMDB", "AppCFG", "DBPath", strExportOrdner
strDBName = strExportOrdner & Application.PathSeparator & "Adressen.mdb"
End If
Daten
End Sub
'/--------------------------------------------------------------------------------------------------------------'/ Funktion: TastenStatus
Erstellt: 1.7.01
Update: 26.10.01
Version: 1.20 ¦
'/ Argument: APITastenKonstante
Typ: Long
' vbKey.... - Konstante, wie vbKeyShift, vbKeyControl
¦
'/ Rückgabe: Boolean-Wert
' Wahr wenn Taste gedrückt ist, False wenn nicht!
¦
'/
¦
'/ Dies ist die erste nach Aussen offene Hilfsfunktion, die In allen VBA-Projekten bequem über einen Klassenver-¦
'/ weis und Aufruf abgerufen werden kann. In diesem Beispiel kann der aktuelle Tastenabfragestatus einer als vb-¦
'/ Konstante übergebenen Taste (zb vbKeyShift) ermittelt werden. Es wird ein Wahrheitswert zurückgegeben!
¦
'/
¦
'/ erfordert: Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
¦
'/--------------------------------------------------------------------------------------------------------------Public Function TastenStatus(APITastenKonstante As Long) As Boolean ' ermittelt Tastenstatus
TastenStatus = CBool(GetAsyncKeyState(APITastenKonstante) And &H8000)
' oder Maustastenstatus!
End Function
2.2.3 [VBA-Klassenmodul]: ThisDocument
2.2.4 [VBA-Klassenmodul]: cls Adresse
'/-----------------------------------------------------------------------------------------------------------'/ Autor: [email protected]
Erstellt: 29.12.2014
Update: 29.12.2014
¦
'/
¦
'/ Zweck: Mit Hilfe dieser Verwaltungs-Klasse werden die Access-Adressdaten gemanagt
¦
'/-----------------------------------------------------------------------------------------------------------Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
lAdressId
sAnrede
sTitel
sVorname
sNachname
sStrasse
lPLZ
sOrt
sEmail
sTelefon
vZusatz
As
As
As
As
As
As
As
As
As
As
As
Long
String
String
String
String
String
Long
String
String
String
Variant
Property Get AdressId()
AdressId = lAdressId
End Property
Property Let AdressId(varNewVal As Variant)
lAdressId = varNewVal
End Property
Property Get Anrede()
Anrede = sAnrede
End Property
Property Let Anrede(varNewVal As Variant)
sAnrede = varNewVal
End Property
Property Get Titel()
Titel = sTitel
End Property
Property Let Titel(varNewVal As Variant)
sTitel = varNewVal
End Property
Property Get Vorname()
Vorname = sVorname
End Property
Property Let Vorname(varNewVal As Variant)
sVorname = varNewVal
End Property
Property Get Nachname()
Nachname = sNachname
End Property
Property Let Nachname(varNewVal As Variant)
D:\Daten\Office\DDDot\VBA-Vorlagen\W14AccessMDB\W14AccessMDB_Doku.docx
29. Dezember 2014 – [ Seite 8 / 9 ]
Zusatztool für Word 2010
W14AccessMDB.Dotm (AddIn)
D.D. [9/9] - 29.12.14
sNachname = varNewVal
End Property
Property Get Strasse()
Strasse = sStrasse
End Property
Property Let Strasse(varNewVal As Variant)
sStrasse = varNewVal
End Property
Property Get PLZ()
PLZ = lPLZ
End Property
Property Let PLZ(varNewVal As Variant)
lPLZ = varNewVal
End Property
Property Get Ort()
Ort = sOrt
End Property
Property Let Ort(varNewVal As Variant)
sOrt = varNewVal
End Property
Property Get Email()
Email = sEmail
End Property
Property Let Email(varNewVal As Variant)
sEmail = varNewVal
End Property
Property Get Telefon()
Telefon = sTelefon
End Property
Property Let Telefon(varNewVal As Variant)
sTelefon = varNewVal
End Property
Property Get Zusatz()
Zusatz = vZusatz
End Property
Property Let Zusatz(varNewVal As Variant)
vZusatz = varNewVal
End Property
D:\Daten\Office\DDDot\VBA-Vorlagen\W14AccessMDB\W14AccessMDB_Doku.docx
29. Dezember 2014 – [ Seite 9 / 9 ]
Herunterladen