Makros und Hinweise

Office Applikationen lassen sich mittels VBA optimieen. Wiederkehrende Aufgaben oder Handgriffe können optimiert und automatisiert werden. Einige unsere Tools und Funktionen haben wir im Kapitel VBA Code zur Verfügung gestellt.

Alle zur Verfügung gestellten Materialien sind nach bestem Wissen zusammengestellt worden, dennoch können wir für Fehler oder die Funktion keine Verantwortung übernehmen.


Zeitstempel erstellen

Generierung eines Zeitstempels aus Datum und Uhrzeit zur weiteren Verwendung in Logs oder als Teil eines Dateinamens.

Mehr…
Public Function createTimeStamp() As String
' Erstellt Timestamp aus Datum und Uhrzeit zur
' weiteren Verwendung in Logs oder als Teil eines Dateinamens
On Error Resume Next
Dim tmpRandom As String
tmpRandom = Format(Date, "yyyymmdd") & "_" & Format(Time, "hhmmss")
createRandomFileName = tmpRandom
Exit Function
ErrorExit:
MsgBox Error(Err), vbInformation, "Fehlermeldung (" & LTrim(Str(Err)) & ")"
Resume Next
End Function
Weniger…

Verzeichnis auswählen

Die Funktion ermöglicht die Auswahl eines Verchnisses via Windows Explorer. Das gewählte Verzeichnis wird als String zur weiteren Verarbeitung zurückgeliefert.

Mehr…
Option Compare Database
Private Type BrowseInfo
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" (lpBrowseInfo As BrowseInfo) As Long
' Ermittelt Verzeichnisnamen und zeigt Windows-Dialog an
Public Function SelectDir(Optional DialogTitel) As String
On Error GoTo ErrorExit
Dim StrukturVerzeichnisInfo As BrowseInfo, ListenNr As Long, Pfad As String
With StrukturVerzeichnisInfo
hOwner = hWndAccessApp
lpszTitle = IIf(IsMissing(DialogTitel), "Verzeichnispfad auswählen", CStr(DialogTitel))
ulFlags = &H1 ' BIF_RETURNONLYFSDIRS
End With
ListenNr = SHBrowseForFolder(StrukturVerzeichnisInfo)
Pfad = Space$(512)
If SHGetPathFromIDList(ByVal ListenNr, ByVal Pfad) Then
SelectDir = Left(Pfad, InStr(Pfad, vbNullChar) - 1)
End If
Exit Function
ErrorExit:
MsgBox Error(Err), 48, "Fehlerhinweis"
Resume Next
End Function
Function returnDir()
On Error GoTo ErrorExit
Dim Pfad As String
Pfad = SelectDir("Verzeichnis auswählen")
If Pfad <> "" Then
returnDir = Pfad & "\"
Else
returnDir = ""
End If
Exit Function
ErrorExit:
MsgBox Error(Err), 48, "Fehlerhinweis"
Resume Next
End Function
Weniger…

Datei auswählen

Die Funktion öffnet das Windows Dateinavigations-Fenster und ein Doppelklick auf die gewählte Datei liefert deren Namen als String zurück

Mehr…
Option Compare Database
Type AP_DateiDialogStruktur
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (DateiDialogStruktur As _
AP_DateiDialogStruktur) As Long
Declare Function GetSaveFileName Lib "comdlg32.dll" Alias _
"GetSaveFileNameA" (DateiDialogStruktur As _
AP_DateiDialogStruktur) As Long
Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_CREATEPROMPT = &H2000
Public Const OFN_ENABLEHOOK = &H20
Public Const OFN_ENABLETEMPLATE = &H40
Public Const OFN_ENABLETEMPLATEHANDLE = &H80
Public Const OFN_EXPLORER = &H80000
Public Const OFN_EXTENSIONDIFFERENT = &H400
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_LONGNAMES = &H200000
Public Const OFN_NOCHANGEDIR = &H8
Public Const OFN_NODEREFERENCELINKS = &H100000
Public Const OFN_NOLONGNAMES = &H40000
Public Const OFN_NONETWORKBUTTON = &H20000
Public Const OFN_NOREADONLYRETURN = &H8000
Public Const OFN_NOTESTFILECREATE = &H10000
Public Const OFN_NOVALIDATE = &H100
Public Const OFN_OVERWRITEPROMPT = &H2
Public Const OFN_PATHMUSTEXIST = &H800
Public Const OFN_READONLY = &H1
Public Const OFN_SHAREAWARE = &H4000
Public Const OFN_SHAREFALLTHROUGH = 2
Public Const OFN_SHARENOWARN = 1
Public Const OFN_SHAREWARN = 0
Public Const OFN_SHOWHELP = &H10
Dim DateiDialogStruktur As AP_DateiDialogStruktur
Function getFileName(Verzeichnis As String, Fenstertitel As String) As String
On Error GoTo Err_AP_DateiOeffnen
Dim Dateityp As String
Dim Dateiname_mit_Pfad As String
Dim Dateiname As String
Dim Rueckwerte As Long
Dateityp = ""
' Dateitypen in der Auswahlliste des Dateityp's
' Alle Dateien
Dateityp = Dateityp & "Alle Dateien (*.*)" & Chr$(0) & "*.*" & Chr$(0)
Dateityp = Dateityp & "PP-PKP Export-Datei (*.txt)" & Chr$(0) & "*.txt" & Chr$(0)
Dateityp = Dateityp & "PersPlan Datei (*.mdb)" & Chr$(0) & "*.mdb" & Chr$(0)
' Access-Dateitypen
' Dateityp = Dateityp & "Microsoft Access-Datenbanken (*.mdb)" & Chr$(0) & "*.mdb" & Chr$(0)
' Dateityp = Dateityp & "MDE-Dateien (*.mde)" & Chr$(0) & "*.mde" & Chr$(0)
' Dateityp = Dateityp & "Winword-Dateien (*.doc)" & Chr$(0) & "*.doc" & Chr$(0)
' Dateityp = Dateityp & "Winword-Vorlagen (*.dot)" & Chr$(0) & "*.dot" & Chr$(0)
' Vorgegebenes Verzeichnis
If Verzeichnis = "" Then
' Wenn leer, dann soll das aktuelle Verzeichnis verwendet werden
Verzeichnis = CurDir$ & Chr$(0)
Else
' ANSI "0" an das übergebene Verzeichnis anhängen
Verzeichnis = Verzeichnis & Chr$(0)
End If
If Fenstertitel = "" Then
' Wenn kein Titel übergeben worden ist
Fenstertitel = "Datei öffnen"
Else
' ANSI "0" an übergebenen Fenstertitel anhängen
Fenstertitel = Fenstertitel & Chr$(0)
End If
' Speicherplatz für Dateieintrag (mit Pfadangabe) reservieren
Dateiname_mit_Pfad = Space$(255) & Chr$(0)
' Speicherplatz für Dateieintrag (ohne Pfadangabe) reservieren
Dateiname = Space$(255) & Chr$(0)
' Datenstruktur von DateiDialogStruktur festlegen
DateiDialogStruktur.lStructSize = Len(DateiDialogStruktur)
DateiDialogStruktur.hwndOwner = 0&
' DateiDialogStruktur.hwndOwner = Application.hWndAccessApp
DateiDialogStruktur.lpstrFilter = Dateityp
DateiDialogStruktur.nFilterIndex = 1
DateiDialogStruktur.lpstrFile = Dateiname_mit_Pfad
DateiDialogStruktur.nMaxFile = Len(Dateiname_mit_Pfad)
DateiDialogStruktur.lpstrFileTitle = Dateiname
DateiDialogStruktur.nMaxFileTitle = Len(Dateiname)
DateiDialogStruktur.lpstrInitialDir = Verzeichnis
DateiDialogStruktur.lpstrTitle = Fenstertitel
DateiDialogStruktur.flags = OFN_FILEMUSTEXIST Or OFN_PATHMUSTEXIST Or OFN_HIDEREADONLY Or OFN_LONGNAMES
DateiDialogStruktur.nFileOffset = 0
DateiDialogStruktur.nFileExtension = 0
DateiDialogStruktur.lCustData = 0
DateiDialogStruktur.lpfnHook = 0
DateiDialogStruktur.lpTemplateName = ""
Rueckwerte = GetOpenFileName(DateiDialogStruktur)
If Rueckwerte <> 0 Then
getFileName = Left(DateiDialogStruktur.lpstrFile, _
InStr(DateiDialogStruktur.lpstrFile, Chr$(0)) - 1)
End If
Exit_AP_DateiOeffnen:
Exit Function
Err_AP_DateiOeffnen:
MsgBox Err.Description
Resume Exit_AP_DateiOeffnen
End Function
Weniger…

PDF Formular erstellen

Eine strukturierte Informationserhebung lässt sich gut per Formular erledigen. Hierzu wird im Texteditor ein Formular erstellt und via PDF Export generiert.

Mehr…

Folgende Schritte sind zur Erstellung des Formulars z. B. mit LibreOffice erforderlich:

  1. Neues Dokument anlegen
  2. Eingabefelder im Formular platzieren
  3. Formular als PDF exportieren
Weniger…