Informationen zur gemeinsamen Dokumenterstellung in Excel

Erfahren Sie, wie die gemeinsame Dokumenterstellung in Excel funktioniert und wie Sie Ihr Add-In oder Makro möglicherweise anpassen müssen, um eine reibungslose Integration mit der gemeinsamen Dokumenterstellung zu ermöglichen.

Kollaboration steht allen Excel Online-Benutzern zur Verfügung. Dieses Feature ist auch in Excel für Windows Desktop verfügbar, jedoch nur für Office 365 Kunden.

Einführung in die gemeinsame Dokumenterstellung

mit Kollaboration können Sie eine in der Cloud gehostete Arbeitsmappe (d. h. OneDrive, OneDrive for Business oder SharePoint Online) gleichzeitig mit anderen Benutzern bearbeiten. Mit jedem Speichern kann jeder, der die Arbeitsmappe zu diesem Zeitpunkt bearbeitet, Änderungen sehen. Wenn AutoSpeichern aktiviert ist, können Sie alle Änderungen an der Arbeitsmappe in Echtzeit anzeigen. Wenn Sie nicht bereit sind, dass andere Ihre Änderungen sehen können, können Sie autoSpeichern deaktivieren, bis Sie bereit sind, Ihre Änderungen zu teilen und die Änderungen anderer zu erhalten.

Prinzipien der gemeinsamen Dokumenterstellung

Excel synchronisiert automatisch Änderungen, die an der Arbeitsmappe vorgenommen werden (von einem Benutzer oder Ihrem Code). Angenommen, Code wird auf der Instanz eines Benutzers ausgeführt und ändert den Inhalt einer Zelle wie folgt: Range("A1").Value = "myNewValue". Excel würde sich darum kümmern, diese Änderung an andere Mitautoren zu senden.

Angenommen, es wird Code auf der Instanz eines anderen Benutzers ausgeführt, der den Inhalt dieser Zelle wie folgt überprüft: MsgBox Range("A1").Value. Der zweite Benutzer würde den Wert "myNewValue" sehen, der vom ersten Benutzer festgelegt wurde.

Excel synchronisiert jedoch nicht automatisch variablen, die von Ihrem Code außerhalb des Arbeitsmappeninhalts erstellt wurden. Angenommen, Ihr Code liest einen Wert aus einer Zelle und lädt ihn dann in eine Variable:

Dim myVariable
myVariable = Range("A1").Value

Excel aktualisiert den Wert von myVariablenicht automatisch, was bedeutet, dass myVariable er nicht mit einer Variablen mit demselben Namen synchronisiert wird, die durch Code erstellt wird, der in den Excel-Instanzen der anderen Mitautoren ausgeführt wird.

Situationen, in denen Sie Ihre Lösung möglicherweise an eine Umgebung mit der gemeinsamen Dokumenterstellung anpassen müssen

Da vorhandene Add-Ins und Makros excel verwenden können, um die änderungen, die sie an der Arbeitsmappe vornehmen, nahtlos an die Mitautoren zu übertragen, können Sie Ihren Code in der Regel in dieser neuen Umgebung verwenden, ohne Änderungen oder Aktualisierungen vorzunehmen. In zwei Fällen müssen Sie Ihren Code jedoch möglicherweise anpassen, wenn er in einer Gemeinsamen Dokumenterstellungseinstellung reibungslos funktioniert:

BeforeRemoteChange- und AfterRemoteChange-Ereignisse wurden hinzugefügt, damit Sie Remoteänderungen verwalten können, falls zutreffend.

Add-Ins mit einem internen Speicherzustand außerhalb des Arbeitsmappeninhalts

Stellen Sie sich ein Add-In vor, mit dem benutzer benutzerdefinierte Diagramme basierend auf Daten in einer Excel-Arbeitsmappe erstellen können. Dieses Add-In lädt Daten für die Diagramme des Benutzers in ein ausgeblendetes Blatt in der Arbeitsmappe. Wenn ein Benutzer eine Datei öffnet, die die benutzerdefinierten Diagramme enthält, liest das Add-In Daten auf dem ausgeblendeten Blatt und lädt das Diagramm in den Arbeitsspeicher. Während der Benutzer das Diagramm bearbeitet, wird diese Im-Memory-Struktur aktualisiert und vor jedem Speichern in die Datei neu geschrieben. Dieses Add-In geht davon aus, dass das ausgeblendete Blatt nur gelesen und in den Arbeitsspeicher geladen werden muss, wenn die Datei geöffnet wird.

Kollaboration öffnet eine weitere Möglichkeit: Das ausgeblendete Blatt kann von einem anderen Benutzer geändert werden, der dasselbe Add-In zur gleichen Zeit ausführt. In diesem Fall sind die Diagramme, die die Benutzer anzeigen, möglicherweise nicht mehr synchron. Zum Beispiel:

  • Angenommen, Benutzer A öffnet die Datei und beginnt mit dem Anzeigen eines vorhandenen benutzerdefinierten Diagramms.
  • Dabei öffnet Benutzer B dieselbe Datei und beginnt, Änderungen am benutzerdefinierten Diagramm vorzunehmen (z. B. ändert den Typ des Diagramms).
  • Diese Änderung würde vom Add-In auf dem Computer von Benutzer B auf dem Blatt gespeichert, aber Benutzer A würde die Änderung nie sehen, bis sie die Datei erneut geladen hat.

Problemumgehung

Versuchen Sie so weit wie möglich, Annahmen darüber zu vermeiden, wann Arbeitsmappendaten geändert werden können. In diesem Fall können Sie das Add-In so ändern, dass es auf das AfterRemoteChange-Ereignis reagiert, und dann die Werte des ausgeblendeten Blatts überprüfen, um festzustellen, ob sie vom Add-In erneut gelesen werden müssen, damit Benutzer A die von Benutzer B vorgenommenen Diagrammänderungen anzeigen kann. Das Add-In soll immer dann ausgeführt werden, wenn der Diagrammbereich geändert wird. Dies geschieht beim Laden und kann bei einer Remoteänderung auftreten. Daher sollte Ihre Logik in AfterRemoteChange das Add-In erneut ausführen.

Add-Ins, die Ereignisse nutzen

Ihr Add-In oder Makro kann bereits Speicher- oder Änderungsereignisse abonniert haben. Mit der Einführung der gemeinsamen Dokumenterstellung können Probleme auftreten bei:

Ereignisse speichern

Möglicherweise treten Probleme auf, wenn Ihr Code Speicherereignisse wie BeforeSave und AfterSave verwendet. Weitere Informationen finden Sie unter Potenzielle Probleme mit Speicherereignissen und AutoSpeichern.

Änderungsereignisse

Standardmäßig muss Ihr Code änderungen von Remotebenutzern in der Regel nicht verarbeiten. Es gibt jedoch einige Fälle, in denen die Behandlung von Remoteänderungen Probleme verursachen kann. Hier werden zwei Beispielszenarien untersucht.

Beispielszenario: Datenüberprüfung

Ein Änderungsereignis wird ausgelöst, wenn ein bestimmter Bereich in der Arbeitsmappe bearbeitet wird. Ihr Add-In-Code überprüft dann die Änderung und benachrichtigt den Benutzer, wenn die Überprüfung fehlschlägt, über ein Popupfenster. Wenn jedoch alle Remotebenutzer, die an dieser Arbeitsmappe zusammenarbeiten, über einen Validierungsfehler benachrichtigt werden, der nicht mit ihren eigenen Änderungen zusammenhängt, kann dies zu einer schlechten Erfahrung führen.

Beispiel

In diesem Beispiel wurde ein Diagramm erstellt, das anzeigt, wie viel durch den Verkauf verschiedener Desserts erzielt wurde. Weder die Kosten noch die Anzahl der verkauften Artikel sollten negativ sein, daher gibt es eine Überprüfung, die eine Meldung für den Benutzer anzeigt. Wenn der ungültige Wert an die Remotebenutzer gepusht wird, sollte ihnen die Validierungsmeldung nicht angezeigt werden.

Public Sub ValidateFigures()
    Dim rangeToValidate As Range
    Set rangeToValidate = ActiveWorkbook.Worksheets("Chart").Range("B2:C6")
    For Each cell In rangeToValidate.Cells
        If (cell.Value < 0) Then
            MsgBox ("Error: Value should not be negative. " & cell.Address)
        End If
    Next
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveWorkbook.Worksheets("Chart").ValidateFigures
End Sub

Daher ist es in diesem Fall nicht erforderlich, das BeforeRemoteChange - oder AfterRemoteChange-Ereignis zu abonnieren.

Private Sub Workbook_AfterRemoteChange()
    ' Do not call validation from RemoteChange event
    'ActiveWorkbook.Worksheets("Chart").ValidateFigures
End Sub

Abbildung 1: Beispiel eines Diagramms, das den Dessertumsatz darstellt

Dessertverkäufe

Beispielszenario: Datenkonsistenz

Ein Änderungsereignis wird ausgelöst, und Ihr Add-In-Code synchronisiert die Daten in der Arbeitsmappe mit Daten in einem anderen Teil der Arbeitsmappe oder in einem externen System. Wenn ein Remotebenutzer die Änderung erhält, die dazu führt, dass der Add-In-Code dieselben Daten synchronisiert, kann dies zu einer Leistungseinbuße für den Remotebenutzer oder zur Datenduplizierung im externen System führen.

Potenzielle Probleme mit Änderungsereignissen

Obwohl Sie normalerweise nicht möchten, dass Ihr Ereignishandlercode als Reaktion auf Änderungen eines Remotebenutzers ausgeführt wird, kann das Standardverhalten, dass Keine Änderungsereignisse ausgelöst werden, Probleme verursachen. Im Folgenden finden Sie einige Beispiele für Probleme und wie Sie sie mithilfe von BeforeRemoteChange - und AfterRemoteChange-Ereignissen umgehen können.

Beispielszenario: Datenvisualisierung

Das Add-In zeichnet Datenpunkte auf einer Karte basierend auf Standortdaten, die in einem Bereich in der Arbeitsmappe gefunden werden. Wenn ein Benutzer standortdaten bearbeitet, sollten alle Remotebenutzer diese Änderung erhalten, damit die Karte jedes Benutzers aktualisiert werden kann.

Beispiel

Angenommen, Sie haben eine benutzerdefinierte Karte erstellt. In diesem Beispiel können Sie Code hinzufügen, um Standortdaten zu ändern, und dann die Karte aktualisieren. Die Arbeitsmappe wird für eine Person in einer anderen Stadt freigegeben. Wenn AutoSpeichern aktiviert ist, wird die Änderung an den Remotebenutzer übergeben, die Zuordnung dieses Benutzers wird jedoch nicht aktualisiert.

Public Sub UpdateMap()
    'Code that updates map
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    'Call subroutine that updates map
End Sub

Verwenden Sie nun das AfterRemoteChange-Ereignis , um Code hinzuzufügen, der die Zuordnung aktualisiert. Nachfolgende Änderungen, die an den Remotebenutzer gesendet werden, werden verwendet, um die Karte zu aktualisieren.

Private Sub Workbook_AfterRemoteChange()
    'Call subroutine that updates map
End Sub

Abbildung 2: Beispiel einer London-Karte mit einigen Sehenswürdigkeiten

Standorte in London

Beispielszenario: Navigationsaufgabenbereich

Ihr Add-In zeigt alle aktuellen Arbeitsmappenregisterkarten in einem Aufgabenbereich an, um die Navigation zu vereinfachen. Wenn ein Benutzer ein Arbeitsblatt hinzufügt, sollten alle Remotebenutzer diese Änderung erhalten, damit der Aufgabenbereich jedes Benutzers einen Link zum neuen Arbeitsblatt anzeigen kann.

Siehe auch

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.