Geschrieben von stauffermi am 14.06.2004, 14:17

Hallo zusammen.

Dieses Jahr habe ich für meinen Arbeitgeber eine ziemlich grosse Excel-Datei machen müssen. Täglich müssen viele Leute dort verschiedene Sachen eingeben.

Wer im Geschäft mit Excel arbeitet, und Sachen in eine Datei eingeben muss, auf die viele andere Personen auch zugreifen können, kennt sicher dieses Problem: Wenn man sie öffnet, kommt eine Meldung: "Die Datei wird von einem anderen Benutzer geöffnet und kann daher nur schreibgeschützt geöffnet werden." Viel Personen vergessen natürlich die Datei sofort nach dem Gebrauch wieder zu schliessen. Je mehr Personen auf diese Datei zugreifen müssen, desto grösser ist die Wahrscheinlichkeit, dass diese Meldung erscheint.

Deshalb habe ich nun ein Makro geschrieben, welches die Datei automatisch nach einer gewissen Zeit der "Nichtbenutzung" speichert und schliesst. Dadurch wird die Datei wieder frei für die anderen Benutzer.

Wie man dies macht möchte ich euch nun zeigen:

Als erstes öffnet ihr die Datei, welche automatisch geschlossen werden soll.

Dann öffnet ihr den Visual Basic Editor (Alt + F11)

Nun markiert Ihr das Verzeichnis "VBAProject (Name der Datei)"

Nun eröffnet Ihr dort ein neues Modul. (Einfügen - Modul)

Jetzt Doppelklick auf das Modul.

Dort fügt ihr nun folgenden Test ein:

Option Explicit
Dim datA As Date

Sub startzeit()
On Error Resume Next
Application.OnTime EarliestTime:=datA, Procedure:="Schließen", Schedule:=False
datA = Now + CDate("0:05:00")
Application.OnTime datA, "Schließen"
End Sub

Sub Schließen()
ActiveWorkbook.Close True
End Sub

Sub Zurücksetzen()
Application.OnTime EarliestTime:=datA, Procedure:="Schließen", Schedule:=False
End Sub

-------------------------------------------------------------
Dort wo nun ("0:05:00") steht, könnt ihr die Zeit abändern ( Stunden:Minuten:Sekunden). So würde die Datei nach 5 Minuten schliessen.

So funktionier es allerdings noch nicht.

Im Verzeichnis VBAProject (Name der Datei) im Unterverzeichnis Microsoft Excel Objekte fügt ihr in "diese Arbeitsmappe noch folgendes ein:

Option Explicit
Private Sub Workbook_Open()
startzeit
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
startzeit
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Zurücksetzen
End Sub

-----------------------------------------------------------------

Nun könnt ihr speichern und viel Ärger ersparen.

Ich hoffe, es hilft euch.

Bewertung Anzahl
6
100,0 %
1 Bewertungen