Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Trotz Freigabe Makros ausführen

Forumthread: 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

Anzeige

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

Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makros in freigegebenen Excel-Dateien ausführen


Schritt-für-Schritt-Anleitung

  1. Datei freigeben: Öffne deine Excel-Datei und gehe zu Überprüfen > Arbeitsmappe freigeben.
  2. Makros aktivieren: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen und wähle die Option „Alle Makros aktivieren“.
  3. Makro erstellen: Erstelle dein Makro wie gewohnt im VBA-Editor.
  4. Fehlerprüfung: Füge MsgBoxen in dein Makro ein, um herauszufinden, wo der Fehler auftritt, z.B.:
    MsgBox "Vor ExclusiveAccess"
    ActiveWorkbook.ExclusiveAccess
    MsgBox "Nach ExclusiveAccess"
  5. Testen: Teste die Datei immer wieder mit unterschiedlichen Benutzern, um zu sehen, ob der Fehler weiterhin auftritt.

Häufige Fehler und Lösungen

  • Fehler: "Die Datei ist gesperrt. Versuchen Sie es später noch mal."

    • Lösung: Dieser Fehler tritt häufig auf, wenn mehrere Benutzer gleichzeitig auf die Datei zugreifen. Stelle sicher, dass du exklusiven Zugriff hast, bevor du das Makro ausführst.
  • Fehler: "Dieser Befehl ist bei freigegebenen Dateien nicht verfügbar."

    • Lösung: Überprüfe, ob du versuchst, einen Befehl auszuführen, der in einer freigegebenen Datei nicht unterstützt wird. In diesem Fall kannst du die Freigabe der Datei vorübergehend aufheben, um das Makro auszuführen.

Alternative Methoden

  • Verwendung von VBA-Alternativen: Wenn du häufig mit freigegebenen Dateien arbeitest, kannst du überlegen, ob du die Makros in einer separaten, nicht freigegebenen Datei laufen lässt und die Ergebnisse dann in die freigegebene Datei überträgst.
  • Excel Online: Eine andere Möglichkeit ist die Verwendung von Excel Online, wo die Zusammenarbeit in Echtzeit möglich ist, auch wenn Makros nicht unterstützt werden.

Praktische Beispiele

  1. Kopieren von Daten:

    Sub DatenKopieren()
       Sheets("Quelle").Range("A1:B10").Copy Sheets("Ziel").Range("A1")
    End Sub

    Teste dieses Makro in einer neuen Datei, um sicherzustellen, dass es funktioniert, bevor du es in die freigegebene Datei überträgst.

  2. Makros testen: Erstelle eine Testdatei mit einfachen Makros und gib diese frei. So kannst du feststellen, ob dein ursprüngliches Problem an der spezifischen Datei oder dem Makro liegt.


Tipps für Profis

  • Verwende Workbook_Open: Setze ein Makro, das beim Öffnen der Datei automatisch ausgeführt wird, um die Bedingungen für die Nutzung von Makros zu überprüfen.
  • Regelmäßige Backups: Mache regelmäßige Backups deiner Excel-Datei, insbesondere wenn du mit Makros arbeitest und die Datei für mehrere Benutzer freigegeben ist.

FAQ: Häufige Fragen

1. Können Makros in freigegebenen Excel-Dateien ausgeführt werden? Ja, es ist möglich, jedoch gibt es Einschränkungen. Einige Befehle sind in freigegebenen Dateien nicht verfügbar, daher solltest du die Datei vorübergehend nicht freigeben, wenn du komplexe Makros ausführen musst.

2. Wie behebe ich den Fehler "Excel die Datei ist gesperrt, versuchen Sie es später"? Überprüfe, ob jemand anderes die Datei geöffnet hat. Wenn du die Datei nicht freigeben musst, schließe alle Instanzen und öffne sie erneut im exklusiven Modus.

3. Wo finde ich die Option, eine Excel-Datei mit Makros freizugeben? Du findest die Option unter dem Reiter Überprüfen, wo du die Funktion Arbeitsmappe freigeben auswählen kannst. Achte darauf, dass alle Benutzer informiert sind, dass die Datei freigegeben ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige