Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bearbeitung via Userform durch mehrere User

Forumthread: Bearbeitung via Userform durch mehrere User

Bearbeitung via Userform durch mehrere User
24.06.2019 13:01:41
Sven
Hallo zusammen,
angehängte Datei ist ein Beispiel. Ich muss gerade mit einer weitaus komplexeren Version hiervon hantieren.
https://www.herber.de/bbs/user/130558.xlsm
Sinn der Sache ist es, dass Änderungen an den Daten nur via Userform vorgenommen (und protokolliert) werden und keine Arbeit direkt auf den Tabellenblättern stattfindet.
Das funktioniert alleine soweit auch ganz gut, allerdings müssen mehrere Anwender mit der Datei im Netzwerk arbeiten. Wie würdet Ihr hier vorgehen, damit es zu keinen Speicherkonflikten kommt?
In der Regel wird die Datei zur Ansicht geöffnet, das Ändern ist eher die Ausnahme. Ich dachte nun, ich nutze eine Schaltfläche, mit der man explizit in den Bearbeiten-Modus wechselt, wodurch die Textfelder beschreibbar und "Speichern" aktiv wird. Hat man gespeichert, wird dieser Modus wieder verlassen. Aber ich kann ja nicht ausschließen, dass zwei Anwender den gleichen Wert ändern.
Außerdem gibt es ein Protokoll-Blatt, auf dem automatisch vermerkt wird, wer wann welchen Wert von was auf was geändert hat. Jede Änderung ist eine Zeile. Das Herausfinden der letzten Zeile klappt ja auch nicht, wenn mehrere Anwender in der geteilten Mappe arbeiten.
Gibt es für so ein Problem irgendwelche Ideen?
Danke und Grüße
Sven
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bearbeitung via Userform durch mehrere User
24.06.2019 13:23:38
Rob
Hallo Sven,
denke da kommst Du mit Excel an die Grenzen des machbaren. Hier wird eine Windows-Applikation erforderlich sein (in .Net mit C# oder VB.Net programmiert), die mit einer Datenbank kommuniziert. Lasse mich aber gerne eines Bessern belehren.
Grüße,
Rob
PS: Ich könnte Dir sowas mit C# programmieren, wenn Du keinen Zeitdruck hast.
Anzeige
AW: Bearbeitung via Userform durch mehrere User
24.06.2019 13:31:21
Sven
Hallo Rob,
danke für das Feedback. Leider ist das nicht was ich hören wollte. :o)
Grundsätzlich wäre eine native Applikation gut, aber hier fehlt mir das Knowhow.
Eine andere Idee wäre noch, wenn ich bei Excel bliebe und die Datenhaltung in eine DB auslagere. Wie ich das sehe, würde sich dann ja die DB um solche Konflikte kümmern und das Excel-Userform nur noch der Darstellung dienen. Updates und Selects würden dann das Userform füllen oder die DB aktualisieren. Bisher habe ich diesen Schritt gescheut. :)
Weißt Du, ob ich mit Access das gleiche Problem hätte? Ein Transfer der bisherigen Logik in Access wäre zwar sicher aufwändig, aber vielleicht noch mit meinen Mitteln machbar...
Grüße
Sven
Anzeige
AW: Bearbeitung via Userform durch mehrere User
24.06.2019 13:43:53
Rob
Das würde schon gehen (Auslagerung der Daten nach Access), wenn Du auf jedem Rechner die Excel-Datei mit der Userform installierst und nicht zentral ablegen möchtest. Letzteres ist aber bei Dir der Fall, wenn ich es richtig verstanden habe. Sonst hättest Du ja keine Konflikte mit Bearbeitungs- und Leserechten.
Anzeige
AW: Bearbeitung via Userform durch mehrere User
24.06.2019 13:49:50
Sven
Hallo Rob,
können wir das mal durchspielen?
Ich würde im Netzwek
- eine Exceldatei mit den Userforms
- eine Access-Datei mit den Daten
haben.
Beim Start der freigegebenen Excel-Mappe werden die Daten aus Access ausgelesen und angezeigt. Bei Änderungen im Userform müssten diese Daten (wie geht das) in Access aktualisiert werden.
Wie sieht das nun bei zwei oder mehr Usern aus? Das Öffnen der Excel-Datei ist ja kein Problem, da freigegeben und eigentlich kein Inhalt vorhanden. Kann die Access-Datenbank jetzt nicht erkennen, wenn Änderungen am gleichen Datensatz vorgenommen werden?
Du siehst, ich bin da irgendwie am Schwimmen und versuche, die bisherige Arbeit zu retten und in eine Multiuser-Lösung (vorher nicht geplant) zu überführen.
Danke
Sven
Anzeige
AW: Bearbeitung via Userform durch mehrere User
24.06.2019 14:08:38
Rob
Du öffnest die Excel-Datei und das VBA-Makro zapft Deine Access-Datenbank an (entweder über ein Event oder Button-Click mit DAO oder ADODB). In einer Windows-Applikation würdest Du das Resultat anschl. in einem Datagridview angezeigt bekommen - in Excel verwendest Du hierfür einfach ein Arbeitsblatt der Excel-Datei.
Im nächsten Schritt nimmst Du über die Userform Änderungen im Arbeitsblatt vor und übergibst das geänderte Arbeitsblatt anschließend wieder zurück nach Access. Über die AutoNumber, die Du in Access vergibst, wird sichergestellt, dass der richtige Datensatz bearbeitet wird. In einer SQL-Datenbank heißt das Primary Key anstatt AutoNumber.
Ich hoffe das war einigermaßen verständlich, anstonsten gib Bescheid.
Anzeige
Kurze Erklärung zu Frontend und Backend
24.06.2019 14:55:24
Zwenn
Hallo Namensvetter,
mal grundsätzlich ein paar Erklärungen zu Begriffen, damit Du eine bessere Vorstellung davon bekommst, was Du da eigentlich machst bzw. erreichen möchtest.
Du möchtest Daten in einem zentralen Speicher erfassen und von dort auch wieder zur Verfügung stellen. Diese Daten werden durch mehrere Anwender gepflegt. Nun gibt es oft den Versuch diese Vorgänge in einer Excel-Datei abzubilden. Genau das funktioniert jedoch meistens nicht, weil es zu den Problemen kommt, die Du schon festgestellt hast. Wer darf wann was.
Es ist zwar ein Gesamtsystem, aber es hat zwei Enden. Nämlich das Frontend und das Backend. Das Frontend ist die Benutzeroberfläche, die die Anwender sehen und über die sie die Daten verwalten. Das Backend ist alles was im Hintergrund läuft. In den meisten Fällen also ein Datenbank System.
Das Problem ist nun, dass grade so viele Frontends zur Verfügung gestellt werden müssen, wie Anwender gleichzeitig auf dem Backend arbeiten. Am einfachsten kannst Du es Dir vorstellen, wenn Du eine Webseite nimmst.
Jeder Anwender, der die Webseite aufruft, kopiert die aktuelle Version der Frontend-Software auf seinen Rechner und sieht sie im Webbrowser. Werden Daten abgerufen oder gespeichert, sorgt die Backend-Software für die Verwaltung der Zugriffe. Das passiert für den Anwender einer Website völlig transparent. Er bekommt es nicht mit.
Genau das Gleiche passiert, wenn Du an einem Geldautomaten Geld abhebst. Alle Geldautomaten bilden das Frontend und können parallel verwendet werden. Es muss jedoch sicher gestellt sein, dass alle Konten im Backend immer nur einen Zugang zur Zeit zulassen.
Für Probleme, wie Du eines lösen willst, ist Excel deshalb aus meiner Sicht das falsche Werkzeug. Eine einzige Datei, die gleichzeitig als Front- und Backend agieren soll macht nur Probleme in der Verwaltung.
Das nur als kurze "Hintergrund-Erläuterung". Für die praktische Umsetzung hat Rob Dir ja schon Hinweise gegeben. Auch wenn man das vermutlich nicht an einem Nachmittag lernt.
Viele Grüße,
Zwenn
Anzeige
AW: Kurze Erklärung zu Frontend und Backend
24.06.2019 15:15:12
Rob
Hallo Zwenn,

Es muss jedoch sicher gestellt sein, dass alle Konten im Backend immer nur einen Zugang zur  _
Zeit zulassen.
Weißt Du ob es einen vergleichbaren Select Update Befehl in Access gibt? In einer SQL-Datenbank sorgt das dafür, dass ein Datensatz nicht parallel von mehreren Usern gleichzeitig manipuliert werden kann. Auf der anderen Seite würde Excel diese Gefahr ausschließen, weil ja nicht mehr wie eine Person Bearbeitungsrechte auf eine Datei erhält. Natürlich mit dem Nachteil, dass auch nur ein User Zugang hat.
Anzeige
AW: Kurze Erklärung zu Frontend und Backend
24.06.2019 20:31:52
Rob
Hm, damit müsste aber die ganze Datenbank blockiert sein und nicht nur die abgefragten Daten lt. SQL-Anweisung im Recordset. Werde ich gleich mal ausprobieren. Danke für den Link!
AW: Kurze Erklärung zu Frontend und Backend
24.06.2019 16:48:57
Sven
Könntest Du obiges Beispiel in eine solche Excel-Access-Lösung umwandeln?
AW: Kurze Erklärung zu Frontend und Backend
25.06.2019 11:05:18
Zwenn
Hallo Sven,
tut mir Leid, aber dafür müsste ich mich selber erst in die Materie vertiefen. Dazu fehlt mir aktuell leider die Zeit.
Viele Grüße,
Zwenn
Anzeige
AW: Bearbeitung via Userform durch mehrere User
24.06.2019 15:13:31
Sven
Rob, Zwenn,
vielen Dank schon mal.
Haltet Ihr das Modell, Excel als Front- und Access als Backend zu nutzen denn für praktikabel oder würdet Ihr dann ganz auf Excel verzichten? Konkret geht es bei mir um 10 bis 15 Nutzer. Hier jedem "sein" Frontend zukommen zu lassen, welches er im pers. Ordner speichert halte ich für realisitisch.
Ich müsste dann halt "nur" die bisherigen Arbeitsblätter herauslösen und in der Datenbank ablegen und verstehen, wie ich die Verknüpfung hergestellt bekomme. Habt Ihr da Literaturempfehulen oder Beispieldateien für mich?
Danke für die bisher großartige Unterstützung und Grüße
Sven
Anzeige
AW: Bearbeitung via Userform durch mehrere User
24.06.2019 15:26:13
Rainer
Hallo Sven,
ich habe mal eine QS-Liste mit ähnlicher Funktionalität erstellt. Ich beschreibe kurz den Weg:
Beim Öffnen der Liste wird immer eine lokale Kopie erstellt, somit kann Niemand die originale Datei beschädigen, alle können editieren.
Die eigentliche Liste ist NICHT in der Excel-Datei, sondern in einer CSV Datei abgelegt.
Wenn jetzt eine Änderung vom Nutzer gemacht wird, dann protokolliert VBA die Uhrzeit, den Nutzernamen und die Zeilennummer. Dann vergleicht es die lokale Kopie (vor der Änderung) mit der Originaldatei, um sicher zu gehen dass nicht 2 Nutzer die gleiche Zeile bearbeiten. Ist kein Konflikt da, so wird die neue oder geänderte Zeile in die Originaldatei und die csv geschrieben. Ist ein Konflikt da, bekommt der Nutzer eine Meldung und muss vergleichen.
Gruß, Rainer
Anzeige
AW: Bearbeitung via Userform durch mehrere User
24.06.2019 16:47:16
Sven
Hallo Rainer, hast Du da mal eine Beispielmappe?
AW: Bearbeitung via Userform durch mehrere User
26.06.2019 22:03:17
Rainer
Hallo Sven,
sorry für die späte Antwort.
Hier ist eine Version der Mappe.
https://www.herber.de/bbs/user/130606.xlsm
Sie wird dir pausenlos eine MsgBox um die Ohren hauen, weil die Datenbank fehlt. Du musst einmalig von Hand die Sub "WriteTextFile" im Modul2 ausführen, dann wird diese Datei erstellt.
Außerdem ist die Option "lokale Kopie" deaktiviert. Dazu gehe ins Workbook_Open Sub und aktiviere diese auskommentierte Zeile:
'ThisWorkbook.SaveAs Environ("temp") & "\QS-Copy.xlsm"
Wichtig hierbei ist, dass die "Copy" Datei nicht wiederholt gestartet werden darf, weil sonst wieder keine Verbindung zur Datenbank besteht. Diese wird immer im gleichen Ordner wie die Startdatei gesucht, aber die Copy liegt für gewöhnlich im TEMP Ordner.
Was diese Mappe jetzt nicht hat, ist die erwähnte vollständige Logging-Funktion. Es werden jetzt nur die letzten Änderungen angezeigt. Wenn diese Funktion dich interessiert, muss ich nochmal nachbessern.
Gruß, Rainer
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Bearbeitung von Daten via Userform in Excel und Access


Schritt-für-Schritt-Anleitung

  1. Vorbereiten der Excel-Datei: Lege eine Excel-Datei an, die als Frontend dient. Diese Datei wird die Userform enthalten, über die die Bearbeitungen vorgenommen werden.

  2. Erstellen der Userform: Öffne den VBA-Editor (Alt + F11) und erstelle eine neue Userform. Füge die benötigten Steuerelemente hinzu (Textfelder, Schaltflächen etc.).

  3. Verknüpfung mit der Access-Datenbank:

    • Stelle sicher, dass Du eine Access-Datenbank hast, in der die Daten gespeichert werden.
    • Verwende DAO oder ADO, um die Verbindung zwischen Excel und Access herzustellen. Beispielcode:
      Dim conn As Object
      Set conn = CreateObject("ADODB.Connection")
      conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=deinPfad\deineDatenbank.accdb;"
  4. Daten einlesen: Beim Öffnen der Excel-Datei solltest Du die Daten aus Access in die Userform laden. Das kannst Du in der Workbook_Open-Ereignisprozedur umsetzen.

  5. Änderungen speichern: Implementiere die Logik, um Änderungen, die über die Userform vorgenommen werden, zurück in die Access-Datenbank zu schreiben. Nutze eine SQL-Anweisung:

    Dim sql As String
    sql = "UPDATE Tabelle SET Feld = '" & TextBox1.Value & "' WHERE ID = " & ID
    conn.Execute sql
  6. Protokollierung: Füge ein Protokoll-Blatt hinzu, um alle Änderungen zu dokumentieren. Jede Änderung sollte mit Zeitstempel, Benutzername und alten/neuen Werten gespeichert werden.

  7. Zugriffsrechte managen: Stelle sicher, dass die Datenbank so konfiguriert ist, dass Konflikte vermieden werden, wenn mehrere Benutzer die Daten gleichzeitig bearbeiten.


Häufige Fehler und Lösungen

  • Speicherkonflikte: Wenn mehrere Benutzer gleichzeitig auf die Excel-Datei zugreifen, kann es zu Konflikten kommen. Verwende für die Bearbeitung einen speziellen Modus, der sicherstellt, dass nur ein Benutzer Änderungen vornehmen kann.

  • Daten nicht aktualisiert: Achte darauf, dass die Verbindung zur Access-Datenbank korrekt eingerichtet ist und dass die richtigen SQL-Befehle verwendet werden.

  • Fehlende Protokollierung: Wenn das Protokoll nicht funktioniert, überprüfe, ob die Logik zur Erfassung der Änderungen korrekt implementiert wurde.


Alternative Methoden

Eine mögliche Alternative zur Nutzung von Excel als Frontend ist die Entwicklung einer Windows-Anwendung in .NET (C# oder VB.NET). Diese würde eine stabilere Lösung für die Bearbeitung von Daten in einer Access-Datenbank bieten.

Ein weiteres Szenario wäre die Nutzung von Access direkt als Frontend, wobei die Benutzeroberfläche in Access selbst erstellt wird. Dies kann die Verwaltung von Benutzern und Zugriffsrechten vereinfachen.


Praktische Beispiele

Ein Beispiel für eine Userform könnte wie folgt aussehen:

Private Sub btnSave_Click()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=deinPfad\deineDatenbank.accdb;"

    Dim sql As String
    sql = "UPDATE Tabelle SET Feld = '" & txtValue.Value & "' WHERE ID = " & txtID.Value
    conn.Execute sql

    ' Protokollierung
    Call LogChange(txtID.Value, txtValue.Value, UserName)

    conn.Close
    Set conn = Nothing
End Sub

Tipps für Profis

  • Halte Deine Excel-Datei und Access-Datenbank gut organisiert, um die Übersichtlichkeit zu bewahren.
  • Nutze Fehlerbehandlungsroutinen in VBA, um unerwartete Fehler beim Zugriff auf die Datenbank zu vermeiden.
  • Stelle sicher, dass Du die neuesten Versionen von Excel und Access verwendest, um von den neuesten Funktionen und Sicherheitsupdates zu profitieren.

FAQ: Häufige Fragen

1. Kann ich Access-Datenbank mehrere Benutzer gleichzeitig bearbeiten? Ja, Access ermöglicht es mehreren Benutzern, gleichzeitig auf die Datenbank zuzugreifen, jedoch musst Du sicherstellen, dass die Datensätze korrekt gesperrt werden, um Konflikte zu vermeiden.

2. Wie kann ich die Userform in Excel anpassen? Du kannst die Userform im VBA-Editor anpassen, indem Du Steuerelemente hinzufügst oder anpasst. Experimentiere mit verschiedenen Layouts, um die Benutzerfreundlichkeit zu verbessern.

3. Ist es notwendig, VBA zu lernen? Um eine effektive Verbindung zwischen Excel und Access herzustellen und die Userform zu implementieren, ist ein gewisses Verständnis von VBA erforderlich. Es lohnt sich, die Grundlagen zu lernen, um deine Excel-Bearbeitungen zu optimieren.

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