Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Trotz Freigabe Makros ausführen

Trotz Freigabe Makros ausführen
02.04.2015 09:43:13
Florian

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:


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'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

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

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Trotz Freigabe Makros ausführen
02.04.2015 12:25:19
Ralf P.
Hallo,
in welcher Zeile kommt der Fehler?
Hat in dem Moment jemand anders die Mappe offen oder hast du exklusiven Zugriff?
Ich arbeite ungern mit freigegebenen Mappen. Ich mache das immer nur für den Zeitraum, wo es unbedingt erforderlich ist.
Evtl. mal eine testmappe bauen und an 2 Rechnern testen, auf denen du gleichzeitig Zugriff hast.
Gruß
Ralf

AW: Trotz Freigabe Makros ausführen
02.04.2015 12:57:01
Florian
Hallo Ralf,
danke erstmal, dass du dich meinem Problem genähert hast ;)
Ich habe eine lokale Kopie der Datei auf meinem Desktop, an der ich rumprobieren kann soviel
ich will es kann demnach kein anderer Benutzer auf die Datei zugreifen bzw. geöffnet haben.
Ich kann nicht sagen, in welcher Zeile der Fehler auftritt, da der Debug-Button der Fehlermeldung
ausgegraut ist. Auch so kann ich das Makro nicht debuggen, da sobald die Datei freigegeben ist
und ich das VBA-Projekt öffnen möchte, die Meldung
"Projekt gesperrt - Projekt kann nicht geöffnet werden"
erscheint.
Die Datei muss allerdings freigegeben sein, da über die gesamte Woche Informationen abgespeichert werden,
die dann ein Kollege einmal in der Woche auswertet und mit diesen arbeitet.
Da diese Datei, Tabellen mehrere 10k Zeilen enthält, ist es unmöglich mit mehrere Excel-Dateien zu arbeiten.
Beste Grüße
Florian

Anzeige
AW: Trotz Freigabe Makros ausführen
03.04.2015 09:03:02
Hajo_Zi
Hallo Florian,
ich glaube gelesen zu haben das in Freigegebenen Arbeitsmappen keine Makros laufen?.

Das wäre doch unlogisch?
05.04.2015 18:40:15
Florian
Hallo Hajo,
sorry, dass ich erst jetzt antworte
da gib ich dir Recht, ich habe das auch schon mal irgendwo gelesen.
Aber,
dann würden Funktionen, wie ActiveWorkbook.MultiUserEditing
oder ActiveWorkbook.ExclusiveAccess total sinnfrei sein oder?
Ich meine wo und wann kann ich denn diese Funktionen noch hernehmen,
außer bei den Makros?
Und wie schon anfangs erwähnt, ich habe schon von ein paar Leuten
gelesen, die auch Probleme mit dieser doofen Freigabe hatten und
bei den meisten war der Befehl ActiveWorkbook.ExclusiveAccess
die Lösung.
Ich bin zur Zeit echt verzweifelt, was dieses Thema angeht :(
Beste Grüße und Frohe Ostern!
Florian

Anzeige
AW: Trotz Freigabe Makros ausführen
06.04.2015 18:05:22
Oberschlumpf
Hi Florian
erstell doch mal eine ganz neue Datei.
Füge ein paar Daten hinzu, und füg auch ein paar Makros hinzu.
Wenn du JETZT die neue Datei freigibst, kommt es dann auch zu dem Fehler?
Wenn NEIN, dann weißt du schon mal, es ist kein grundsätzliches Excel-Prob mit Makros in freigegebenen Dateien, sondern es liegt definitiv an deiner Datei.
EINE Frage ist dann schon beantwortet.
Jetzt könntest du nach und nach die Daten aus der alten Datei kopieren und in die neue Datei einfügen.
Immer mal wieder testen, was passiert, wenn du die Datei freigibst.
Wenn irgendwann der Fehler wieder auftritt, dann weißt du, um welchen Teil der Daten oder Makros es sich handelt, denn den Teil hattest du ja gerad eingefügt.
Helfen meine Ideen?
Ciao
Thorsten

Anzeige
Die Verwirrung steigt weiter an -.-
07.04.2015 09:45:40
Florian
Hallo Thorsten,
durch deine Tipps habe ich weitere Erkenntnisse und meine Hoffnung, dass es
doch irgendwie funktioniert hat sich nochmal gestärkt.
Es ist nämlich so, dass bei freigegebenen Arbeitsmappen, Makros durchaus ausgeführt
werden können. Dies hab ich mithilfe von MsgBoxen herausgefunden. Auch die Methode
ActiveWorkbook.MultiUserEditing liefert true, wenn die Arbeitsmappe freigegeben
ist, ansonsten false.
Ich habe auch herausgefunden an welcher Stelle der Fehler auftritt (mithilfe der MsgBoxen).
Die Fehlermeldung erscheint in der Zeile ActiveWorkbook.ExclusiveAccess.
Ich habe dann aus Testgründen die Zeile herausgenommen und den zweiten Punkt herausgefunden,
an dem der Fehler auftritt und das ist der Befehl Me.Save.
Der Befehl Application.Dialogs(xlDialogSaveAs).Show (strDateiname) wirft dann neue Rätsel auf.
Der "Speichern unter"-Dialog erscheint ohne irgendwelche Meldungen, aber:
... wenn ich die Datei unter einem anderen Namen abspeichern will, wird die Datei auch unter
dem neuen Namen abgespeichert und direkt im Anschluss hängt sich Excel auf.
... wenn ich die bestehende Datei überschreiben möchte, tritt die selbe Fehlermeldung auf, die
mich seit knapp 2 Wochen in den Wahnsinn treibt.
Und um das ganze noch mysteriöser zu gestalten, ist mir aufgefallen, dass bei der Originalen Datei
der Fehler auftritt, wenn man auf "Speichern" drückt. (Der erste und letzte Code-Block wurden auskommentiert)
Wenn ich aber auf "Speichern unter" drücke, dann wird die Datei gespeichert.
Sprich es erscheint KEIN "Speichern unter"-Dialog, sondern es wird die Datei so abgespeichert,
wie wenn ich auf "Speichern" drücke.
Also Thorsten Fazit zu deinen Ideen:
Sie haben mir definitiv weitergeholfen.
Allerdings haben Sie weitere Fragen verursacht,
die bei mir die totale Verwirrung herrscht -.-
Ich hoffe, dass Ihr Experten nicht so ratlos seit wie ich im Moment
Beste Grüße
Florian

Anzeige
Die Verwirrung steigt weiter an -.-
07.04.2015 09:45:49
Florian
Hallo Thorsten,
durch deine Tipps habe ich weitere Erkenntnisse und meine Hoffnung, dass es
doch irgendwie funktioniert hat sich nochmal gestärkt.
Es ist nämlich so, dass bei freigegebenen Arbeitsmappen, Makros durchaus ausgeführt
werden können. Dies hab ich mithilfe von MsgBoxen herausgefunden. Auch die Methode
ActiveWorkbook.MultiUserEditing liefert true, wenn die Arbeitsmappe freigegeben
ist, ansonsten false.
Ich habe auch herausgefunden an welcher Stelle der Fehler auftritt (mithilfe der MsgBoxen).
Die Fehlermeldung erscheint in der Zeile ActiveWorkbook.ExclusiveAccess.
Ich habe dann aus Testgründen die Zeile herausgenommen und den zweiten Punkt herausgefunden,
an dem der Fehler auftritt und das ist der Befehl Me.Save.
Der Befehl Application.Dialogs(xlDialogSaveAs).Show (strDateiname) wirft dann neue Rätsel auf.
Der "Speichern unter"-Dialog erscheint ohne irgendwelche Meldungen, aber:
... wenn ich die Datei unter einem anderen Namen abspeichern will, wird die Datei auch unter
dem neuen Namen abgespeichert und direkt im Anschluss hängt sich Excel auf.
... wenn ich die bestehende Datei überschreiben möchte, tritt die selbe Fehlermeldung auf, die
mich seit knapp 2 Wochen in den Wahnsinn treibt.
Und um das ganze noch mysteriöser zu gestalten, ist mir aufgefallen, dass bei der Originalen Datei
der Fehler auftritt, wenn man auf "Speichern" drückt. (Der erste und letzte Code-Block wurden auskommentiert)
Wenn ich aber auf "Speichern unter" drücke, dann wird die Datei gespeichert.
Sprich es erscheint KEIN "Speichern unter"-Dialog, sondern es wird die Datei so abgespeichert,
wie wenn ich auf "Speichern" drücke.
Also Thorsten Fazit zu deinen Ideen:
Sie haben mir definitiv weitergeholfen.
Allerdings haben Sie weitere Fragen verursacht,
die bei mir die totale Verwirrung herrscht -.-
Ich hoffe, dass Ihr Experten nicht so ratlos seit wie ich im Moment
Beste Grüße
Florian

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige