Excel-Datei beim Öffnen automatisch aktualisieren
Schritt-für-Schritt-Anleitung
Um eine Excel-Datei beim Öffnen automatisch zu aktualisieren, kannst du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
-
Öffne den VBA-Editor: Drücke ALT + F11
in Excel.
-
Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)", wähle Einfügen
und dann Modul
.
-
Füge den folgenden Code ein:
Sub Aktualisieren()
ActiveSheet.Unprotect Password:="1234"
ActiveWorkbook.Unprotect Password:="1234"
On Error GoTo ErrMsg
ActiveWorkbook.UpdateLink Name:="K:\Material\Materialdatenbank_Bestellformular\Materialdatenbank_2.0.xlsm", Type:=xlExcelLinks
ActiveWorkbook.Protect Password:="1234"
ActiveSheet.Protect Password:="1234"
Exit Sub
ErrMsg:
MsgBox "Die Datei konnte nicht aktualisiert werden, da sie derzeit von einem anderen Benutzer geöffnet ist."
End Sub
-
Schließe den VBA-Editor und speichere die Datei.
-
Teste das Makro: Öffne die Datei, um zu sehen, ob die Aktualisierung funktioniert.
Häufige Fehler und Lösungen
- Laufzeitfehler: Wenn die Datenbank geöffnet ist, kann es zu einem Laufzeitfehler kommen. Stelle sicher, dass die Datei nicht von einem anderen Benutzer bearbeitet wird.
- MsgBox zeigt falschen Benutzer an: Wenn du den Benutzernamen des aktuellen Nutzers ermitteln möchtest, kannst du den
Environ("Username")
Befehl in eine versteckte Tabelle einfügen, wie von Klaus vorgeschlagen.
Alternative Methoden
Eine andere Methode zur Aktualisierung könnte die Verwendung eines Timer-Events sein, um die Datei in bestimmten Intervallen zu aktualisieren. Hier ist ein Beispiel:
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:05:00"), "Aktualisieren"
End Sub
Das oben genannte Makro aktualisiert die Datei alle fünf Minuten, solange sie geöffnet ist.
Praktische Beispiele
Ein Beispiel für ein effektives Makro sieht so aus:
Sub Aktualisieren()
Dim strFile As String
strFile = "K:\Material\Materialdatenbank_Bestellformular\Materialdatenbank_2.0.xlsm"
If IsFileOpen(strFile) Then
MsgBox strFile & " ist von einem anderen Benutzer geöffnet."
Else
ActiveWorkbook.UpdateLink Name:=strFile, Type:=xlExcelLinks
End If
End Sub
Dieses Beispiel überprüft, ob die Datei geöffnet ist und aktualisiert sie nur, wenn sie nicht in Benutzung ist.
Tipps für Profis
- Sichere deine Makros: Verwende das
ActiveWorkbook.Unprotect
und ActiveSheet.Unprotect
, um deine Arbeitsmappe vor unbefugtem Zugriff zu schützen.
- Verwende Fehlerbehandlung: Implementiere
On Error GoTo
, um sicherzustellen, dass dein Makro bei Fehlern nicht abstürzt, sondern eine benutzerfreundliche Fehlermeldung anzeigt.
- Testen in verschiedenen Excel-Versionen: Achte darauf, dass dein Code in verschiedenen Excel-Versionen (z. B. Excel 2007, Excel 2010) funktioniert.
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass mein Makro bei jedem Öffnen automatisch ausgeführt wird?
Um sicherzustellen, dass dein Makro bei jedem Öffnen der Datei ausgeführt wird, kannst du den Code in das Workbook_Open
Event einfügen.
2. Was tun, wenn ich die Meldung "Die Datei ist geöffnet" bekomme?
Wenn du die Meldung erhältst, dass die Datei bereits geöffnet ist, kannst du entweder warten, bis der Benutzer die Datei schließt, oder alternative Methoden zur Abfrage des Benutzernamens verwenden, wie in den vorherigen Abschnitten beschrieben.
3. Funktioniert das Makro auch in Excel 2010 und höher?
Ja, die meisten der vorgestellten Makros sollten in Excel 2010 und höheren Versionen funktionieren. Achte jedoch darauf, dass du die richtige Sicherheitsstufe für Makros in Excel eingestellt hast.