Einen wunderschönen guten Morgen zusammen,
ich heiße Florian und ich wurde durch meinen Job
vor ein, für mich, unlösbaren Problem gesetzt.
Ich habe hier eine - von meinem Vorgänger erstellte - Excel-Datei,
auf die mehrer Benutzer gleichzeitig zugreifen können. (Die Datei ist freigegeben)
Die Datei verfügt auch über ein paar Makros.
Eines davon ist das Worbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Makro,
das mir richtig Probleme verschafft
Es sieht folgendermaßen aus:
'Kontrolle, ob Datei freigegeben ist, wenn ja Freigabe deaktivieren
Application.DisplayAlerts = False
Dim freigabe As Boolean
freigabe = ActiveWorkbook.MultiUserEditing
If freigabe Then
With ActiveWorkbook
.ExclusiveAccess
.KeepChangeHistory = False
End With
End If
'Speichern vorbereiten
Application.ScreenUpdating = False
Sheets("Makros").Visible = True
Sheets("SW_Fleetstatus").Visible = False
Sheets("neue_Fahrzeuge").Visible = False
'Datei speichern bzw speichern unter-Dialog anzeigen
Application.EnableEvents = False
If SaveAsUI = True Then
Dim strDateiname As String
Dim datum As Date
datum = Date
Dim KW As Integer
Dim t As Double
t = DateSerial(Year(datum + (8 - Weekday(datum)) Mod 7 - 3), 1, 1)
KW = (datum - t - 3 + (Weekday(t) + 1) Mod 7) \ 7 + 1
strDateiname = ("SW_Fleetstatus_KW" & KW & ".xlsm")
Application.Dialogs(xlDialogSaveAs).Show (strDateiname)
Else
Me.Save
End If
'Speichern abschliessen
Application.EnableEvents = True
Sheets("SW_Fleetstatus").Visible = True
Sheets("neue_Fahrzeuge").Visible = True
Sheets("Makros").Visible = False
Sheets("SW_Fleetstatus").Select
ActiveWorkbook.Saved = True
Application.ScreenUpdating = True
Cancel = True
'Datei wieder freigeben
Application.DisplayAlerts = False
If Not ActiveWorkbook.MultiUserEditing And freigabe Then
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName, accessMode:=xlShared
End If
Application.DisplayAlerts = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Das Ganze funktioniert super, wenn die Datei nicht freigegeben ist.
Sobald ich dann die Freigabe aktiviere, kommt die Fehlermeldung:
"Laufzeitfehler '1004':
Die Datei ist gesperrt. Versuchen Sie es später noch mal."
Gestern hab ich ziemlich lange recherchiert und
dort auch den Anfang(Kontrolle, ob Datei freigegeben ist)
und das Ende(Datei wieder freigeben) meines Makros
gefunden und hinzugefügt. Bei fast allen anderen, die
ein ähnliches Problem hatten waren auch diese Zeilen die
Lösung. Bei mir aber anscheinend nicht.
Ich hoffe ihr könnt mir da weiterhelfen. Ich verzweifle
sonst hier noch vor meinem Bildschirm.
Beste Grüße
Florian