Gemeinsame Dokumenterstellung in Excel-Add-Ins

Bei gemeinsamer Dokumenterstellung können mehrere Personen zusammenarbeiten und dieselbe Excel-Arbeitsmappe gleichzeitig bearbeiten. Alle Mitverfasser einer Arbeitsmappe können die Änderungen eines anderen Mitverfassers sehen, sobald dieser Mitverfasser die Arbeitsmappe speichert. Um eine Excel-Arbeitsmappe gemeinsam erstellen zu können, muss die Arbeitsmappe in OneDrive, OneDrive for Business oder SharePoint Online gespeichert sein.

Wichtig

In Excel für Microsoft 365 sehen Sie autoSpeichern in der oberen linken Ecke. Wenn AutoSpeichern aktiviert ist, sehen Mitverfasser Ihre Änderungen in Echtzeit. Berücksichtigen Sie die Auswirkungen dieses Verhalten auf den Entwurf Ihres Excel-Add-Ins. Benutzer können die AutoSpeichern-Funktion über die Option in der oberen linken Ecke des Excel-Fensters deaktivieren.

Gemeinsame Dokumenterstellung – Übersicht

Wenn Sie den Inhalt einer Arbeitsmappe ändern, werden diese Änderungen von Excel automatisch für alle Mitverfasser synchronisiert. Mitverfasser können den Inhalt einer Arbeitsmappe ändern, dies kann aber auch Code, der in einem Excel-Add-In ausgeführt wird. Wenn beispielsweise der folgende JavaScript-Code in einem Office-Add-In ausgeführt wird, wird der Wert eines Bereichs auf Contoso festgelegt.

range.values = [['Contoso']];

Nachdem „Contoso“ für alle Mitverfasser synchronisiert wurde, sieht jeder Benutzer oder jedes Add-In, das in derselben Arbeitsmappe ausgeführt wird, den neuen Wert des Bereichs.

Kollaboration synchronisiert nur den Inhalt innerhalb der freigegebenen Arbeitsmappe. Werte, die aus der Arbeitsmappe in JavaScript-Variablen in einem Excel-Add-In kopiert werden, werden nicht synchronisiert. Wenn ihr Add-In z. B. den Wert einer Zelle (z. B. "Contoso") in einer JavaScript-Variablen speichert und dann ein Mitautor den Wert der Zelle in "Example" ändert, sehen alle Mitautoren nach der Synchronisierung "Beispiel" in der Zelle. Der Wert der JavaScript-Variablen ist jedoch weiterhin auf "Contoso" festgelegt. Darüber hinaus verfügt jeder Mitautor, wenn mehrere Mitautoren dasselbe Add-In verwenden, über eine eigene Kopie der Variablen, die nicht synchronisiert wird. Wenn Sie Variablen verwenden, die Arbeitsmappeninhalte verwenden, stellen Sie sicher, dass Sie nach aktualisierten Werten in der Arbeitsmappe suchen, bevor Sie die Variable verwenden.

Verwenden von Ereignissen zum Verwalten des InMemory-Zustands Ihres Add-Ins

Excel-Add-Ins können Arbeitsmappeninhalte (aus ausgeblendeten Arbeitsblättern und einem Einstellungsobjekt) lesen und dann in Datenstrukturen wie Variablen speichern. Nachdem die ursprünglichen Werte in eine dieser Datenstrukturen kopiert wurden, können Mitautoren den ursprünglichen Arbeitsmappeninhalt aktualisieren. Dies bedeutet, dass die kopierten Werte in den Datenstrukturen jetzt nicht mehr mit dem Inhalt der Arbeitsmappe synchronisiert sind. Achten Sie beim Erstellen Ihrer Add-Ins darauf, diese Trennung von Arbeitsmappeninhalten und in Datenstrukturen gespeicherten Werten zu berücksichtigen.

Beispielsweise können Sie ein Inhalts-Add-In erstellen, das benutzerdefinierte Visualisierungen anzeigt. Der Zustand Ihrer benutzerdefinierten Visualisierungen kann in einem ausgeblendeten Arbeitsblatt gespeichert sein. Wenn Mitautoren dieselbe Arbeitsmappe verwenden, kann das folgende Szenario auftreten.

  • Benutzer A öffnet das Dokument, und die benutzerdefinierten Visualisierungen werden in der Arbeitsmappe angezeigt. Die benutzerdefinierten Visualisierungen lesen Daten aus einem ausgeblendeten Arbeitsblatt (z. B. ist die Farbe der Visualisierungen auf Blau festgelegt).
  • Benutzer B öffnet dasselbe Dokument und beginnt mit dem Ändern der benutzerdefinierten Visualisierungen. Benutzer B legt die Farbe der benutzerdefinierten Visualisierungen auf Orange fest. Orange wird im ausgeblendeten Arbeitsblatt gespeichert.
  • Das ausgeblendete Arbeitsblatt von Benutzer A wird mit dem neuen Wert (Orange) aktualisiert.
  • Die benutzerdefinierten Visualisierungen von Benutzer A haben immer noch die Farbe Blau.

Wenn die benutzerdefinierten Visualisierungen von Benutzer A auf Änderungen reagieren sollen, die von Mitverfassern am ausgeblendeten Arbeitsblatt vorgenommen werden, verwenden Sie das BindingDataChanged-Ereignis. Dadurch wird sichergestellt, dass Änderungen an Arbeitsmappeninhalten, die von der Mitverfassern vorgenommen werden, im Zustand des Add-Ins wiedergegeben werden.

Einschränkungen in Bezug auf die Verwendung von Ereignissen mit gemeinsamer Dokumenterstellung

Wie zuvor beschrieben wird in einigen Szenarios durch Auslösen von Ereignissen für alle Mitverfasser eine verbesserte Benutzerfreundlichkeit erzielt. Bedenken Sie jedoch, dass durch dieses Verhalten in einigen Szenarios die Benutzerfreundlichkeit auch verschlechtert werden kann.

In Datenvalidierungsszenarien ist es beispielsweise üblich, die Benutzeroberfläche als Reaktion auf Ereignisse anzuzeigen. Das im vorherigen Abschnitt beschriebene BindingDataChanged-Ereignis wird ausgeführt, wenn entweder ein lokaler Benutzer oder ein Mitautor (Remote) den Arbeitsmappeninhalt innerhalb der Bindung ändert. Wenn der Ereignishandler des Ereignisses die BindingDataChanged Benutzeroberfläche anzeigt, wird benutzern eine Benutzeroberfläche angezeigt, die nicht mit Änderungen in der Arbeitsmappe zusammenhängt, an denen sie gearbeitet haben, was zu einer schlechten Benutzererfahrung führt. Vermeiden Sie die Anzeige der Benutzeroberfläche, wenn Sie Ereignisse in Ihrem Add-In verwenden.

Vermeiden von Konflikten bei der gemeinsamen Dokumenterstellung von Tabellenzeilen

Es ist ein bekanntes Problem, dass Aufrufe der API zu Konflikten bei der TableRowCollection.add gemeinsamen Dokumenterstellung führen können. Es wird davon abgeraten, diese API zu verwenden, wenn Sie davon ausgehen, dass Ihr Add-In ausgeführt wird, während andere Benutzer die Arbeitsmappe des Add-Ins bearbeiten (insbesondere, wenn sie die Tabelle oder einen Bereich unter der Tabelle bearbeiten). Die folgende Anleitung sollte Ihnen helfen, Probleme mit der TableRowCollection.add -Methode zu vermeiden (und vermeiden, dass die gelbe Leiste ausgelöst wird, die Excel zeigt, in der Benutzer zur Aktualisierung aufgefordert werden).

  1. Verwenden Sie Range.values anstelle von TableRowCollection.add. Wenn Sie die Range Werte direkt unterhalb der Tabelle festlegen, wird die Tabelle automatisch erweitert. Andernfalls führt das Hinzufügen von Tabellenzeilen über die Table APIs zu Mergekonflikten für Coauth-Benutzer.
  2. Es sollten keine Datenüberprüfungsregeln auf Zellen unterhalb der Tabelle angewendet werden, es sei denn, die Datenüberprüfung wird auf die gesamte Spalte angewendet.
  3. Wenn in der Tabelle Daten vorhanden sind, muss das Add-In dies verarbeiten, bevor der Bereichswert festgelegt wird. Wenn Sie Range.insert zum Einfügen einer leeren Zeile verwenden, werden die Daten verschoben und Platz für die erweiternde Tabelle schaffen. Andernfalls riskieren Sie das Überschreiben von Zellen unterhalb der Tabelle.
  4. Sie können einer Tabelle mit Range.valueskeine leere Zeile hinzufügen. Die Tabelle wird nur automatisch erweitert, wenn Daten in den Zellen direkt unter der Tabelle vorhanden sind. Verwenden Sie entweder temporäre Daten oder ausgeblendete Spalten als Problemumgehung, um eine leere Tabellenzeile hinzuzufügen.

Siehe auch