Warum Access? Warum ĂŒberhaupt Automatisierung?
Access ist in vielen KMU noch Alltag.
Alte Lösungen, historisch gewachsen, oft nicht dokumentiert.
Aber: Wenn’s lĂ€uft, lĂ€uft’s.
Bis jemand merkt: Die HĂ€lfte der Arbeit ist Klickarbeit.
Routine nervt.
Routine kostet Zeit.
Routine muss weg.
Was ich automatisiere
Typische FĂ€lle:
- TĂ€glicher Datenimport aus Excel
- Reports als PDF verschicken
- Serienmails an Kunden
- BenutzerfĂŒhrung ĂŒber Formulare
- Logik fĂŒr fehlerfreie Dateneingabe
- Automatische Backups
Access kann das. Wenn Du’s ihm beibringst.
Einstieg: Import per Knopfdruck
Statt: „Datei öffnen â Daten kopieren â EinfĂŒgen â Speichern“
Lieber ein Button.
Public Sub ImportExcelDaten()
Dim Pfad As String
Pfad = "C:\Import\Daten.xlsx"
DoCmd.TransferSpreadsheet _
TransferType:=acImport, _
SpreadsheetType:=acSpreadsheetTypeExcel12Xml, _
TableName:="tblImport", _
FileName:=Pfad, _
HasFieldNames:=True
End Sub
EinfĂŒgen in ein Formular.
Button drauf. Fertig.
Jetzt ĂŒbernimmt Access den Job.
Automatischer PDF-Report mit Versand
Jeden Montag sollen Zahlen raus?
Public Sub BerichtAlsPDF()
Dim Pfad As String
Pfad = "C:\Reports\Umsatzbericht_" & Format(Date, "yyyymmdd") & ".pdf"
DoCmd.OutputTo _
ObjectType:=acOutputReport, _
ObjectName:="rptUmsatz", _
OutputFormat:=acFormatPDF, _
OutputFile:=Pfad, _
AutoStart:=False
Call MailVersenden(Pfad)
End Sub
Private Sub MailVersenden(PDFPfad As String)
Dim OutlookApp As Object
Dim Mail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set Mail = OutlookApp.CreateItem(0)
With Mail
.To = "chef@firma.de"
.Subject = "Umsatzbericht"
.Body = "Moin, anbei der Umsatzbericht als PDF."
.Attachments.Add PDFPfad
.Send
End With
End Sub
Der Bericht wird erstellt, gespeichert, gemailt.
Kein „Speichern unter“ mehr. Kein Anhang manuell.
BenutzerfĂŒhrung: Pflichtfelder prĂŒfen
Formular mit Validierung.
Sonst wird nie alles korrekt ausgefĂŒllt.
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(Me.Kundenname) Then
MsgBox "Kundenname fehlt.", vbExclamation
Cancel = True
End If
End Sub
Auch gut: Felder einfÀrben.
Private Sub Kundenname_LostFocus()
If IsNull(Me.Kundenname) Then
Me.Kundenname.BackColor = vbRed
Else
Me.Kundenname.BackColor = vbWhite
End If
End Sub
Einfach, aber wirksam.
Automatische Backup-Routine
Freitags ein Backup. Ohne Zutun.
Public Sub BackupDatenbank()
Dim Quelle As String, Ziel As String
Quelle = CurrentDb.Name
Ziel = "C:\Backups\DB_" & Format(Date, "yyyymmdd") & ".accdb"
FileCopy Quelle, Ziel
End Sub
Per AutoExec oder Zeitsteuerung starten.
Am besten extern aufrufen via Taskplaner und msaccess.exe /x BackupDatenbank
.
Datumsfelder automatisch setzen
Nutzer sollen nichts eintippen mĂŒssen.
Heute ist heute:
Private Sub Form_Current()
If Me.NewRecord Then
Me.Erstellungsdatum = Date
End If
End Sub
Auch beliebt: Ănderungszeit speichern.
Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.GeÀndertAm = Now
End Sub
Fazit? Gibt’s nicht. Nur eine Aufgabe.
Such Dir die nervigste Routine.
Und dann: Raus damit.
Access ist nicht tot. Access ist unterschÀtzt.
Wenn Du willst, dass Access Dir Arbeit abnimmt, dann musst Du ihm beibringen, wie.
Nicht alles geht. Aber vieles.
Und wenn’s klemmt: Frag einen, der’s schon gemacht hat.
Keine Antworten