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 myVariable
nicht 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:
- Add-Ins mit einem internen Speicherzustand außerhalb des Arbeitsmappeninhalts
- Add-Ins, die Ereignisse nutzen
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
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
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
- AutoSave
- Gleichzeitiges Zusammenarbeiten an Excel-Arbeitsmappen mit der gemeinsamen Dokumenterstellung
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.