Anzeige
Archiv - Navigation
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
320to324
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zugriff mehrer User

Zugriff mehrer User
10.10.2003 12:18:23
Krzysztof Krawczyk
Hallo Leute,

hab folgendes Problem:
im Büro sind wir als Mitarbeiter unsere Gruppe per intranet vernetzt. Wir arbeiten hier mit einer großen Datenmenge, die ich in Form einer (ziemlich komplizierten) Excel97-Arbeitsmappe verwalte, ad Access nicht vorhanden ist. Es ist jedoch notwendig, dass alle Team-Kollegen wennmöglich gleichzeiteig Zugriff auf diese Datei haben. Sie sollen die Tabelle lesen, neue Beiträge hinzufügen und bestehende ändern können.

Im Beitrag Nr: t14243 in fand ich ein kurzes Gespräch zu diesem Thema. Da schreibt der Rolf, dass er genau dieses Problem hat und: "In einigen Arbeitsmappen die Erfassung und die Speicherung", "In anderen nur die Auswertung per VBA" erfolgt.
Wie funktioniert das? Kann mir jemand helfen?

Der lösungsvorschlag von Reinhard:

"Du mußt dafür sorgen, daß diejenigen User, die Daten SCHREIBEN sollen, nur für diesen kurzen Moment die Datei 'schreibbar' geöffnet haben, in der Zeit, in der Sie die zu erfassenden Daten über ein Dialogfeld 'vorbereiten', ist die Datei nur 'lesbar' geöffnet. Beim Öffnen (zum Schreiben) fängst Du die Fehlermeldung von Excel ab (falls Datei gerade nicht schreibbar zu öffnen ist), und gibst den User die Warnung, daß er den Versuch wiederholen muß."

hört sich sehr gut an. Ich kann Fehler per VBA zwar einigermassen umgehen, bräuchte aber doch ein Bißchen genauere Hilfe, vielleicht ein, zwei Script-Beispiele, die ich mir anschauen und per "Learnig-by-Doing" umsetzen könnte...

Zusatzfrage: Die Datensätze (jeweil eine Zeile) werden mit einer Laufenden Nummer gekennzeichnet. Per VBA wird diese jedem neu erfassten Datensatz fortlaufend zugeteilt und in der Eingabe-DialogBox mitgeteilt. Ist es möglich, dies auch für mehrer user zu realisieren, ohne dass die LfdNr doppelt vergeben wird?

Kann mir da jemand helfen???? Wäre sehr dankbar!!!

Krzysztof

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zugriff mehrer User
10.10.2003 12:52:32
ChrisL
Hi Krzysztof

Wenn du die Datei auf dem Intranet publizierst d.h. in eine HTML Seite einbindest dann geht es nicht. Wenn ein User die Datei im Intranet anklickt, wird die Datei in seinen temporären Internetspeicher kopiert. Er kann die Datei anschliessend nicht auf dem Webserver abspeichern (FTP usw.).

Ich glaube worauf sich Reinhard mit dem Hinweis 'ich praktiziere so etwas im Intranet' bezieht, ist dass er die Datei auf einem öffentlichen Serververzeichnis zur Verfügung stellt.
https://www.herber.de/forum/archiv/12to16/t14243.htm

Gruss
Chris
Anzeige
AW: Zugriff mehrer User
10.10.2003 13:37:34
Krzysztof Krawczyk
Hallo ChrisL,

ich habe mich wohl falsch ausgedrückt: die Datei ist nicht als html sondern einfach im Intranet-Netzwerk (LAN) als .xls-Datei in einem für alle Kollegen zugänglichem Ordner gespeichert.Das heißt jeder kann zugreifen - leider nur der erste User kann dort schreiben und speichern! Der zweite, dritte usw bekommt die meldung "Datei bereits geöffnet von..." und kann nur lesen.
Dies gilt zu umgehen.

Krzysztof
AW: Zugriff mehrer User
10.10.2003 14:24:58
ChrisL
Hi

Schau mal unter Extras, Schutz, Arbeitsmappe freigeben an.

Der Anstoss von Reinhard erfordert einiges an Makroprogrammierung... dazu nachstehend ein Ansatz...

Option Explicit
Public Besetzt As Boolean
Public DBPfad As String


Function DateiIstFrei(ByVal sDateiname As String) As Boolean
'Funktion zur Überpfüfung, ob Datei bereits geöffnet
Dim hFile As Integer
On Error Resume Next
hFile = FreeFile()
Open sDateiname For Random Access Read Lock Read Write As #hFile
If Err Then
DateiIstFrei = False
Else
DateiIstFrei = True
End If
Close #hFile
End Function



Sub schliessen()
Application.Cursor = xlWait
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.ScreenUpdating = True
Application.Cursor = xlDefault
End Sub



Sub SchliessenOhneSpeicherung()
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
Application.ScreenUpdating = True
Application.Cursor = xlDefault
End Sub



Sub oeffnen()
Dim newHour As Date, newMinute As Date, newSecond As Date, WaitTime As Date
Dim i As Integer
Application.Cursor = xlWait
Application.ScreenUpdating = False
Besetzt = False
If DateiIstFrei(DBPfad) = True Then
Workbooks.Open DBPfad
Exit Sub
Else
'1. Datei ist besetzt, deshalb 3 Sekunden warten und erneut testen
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 3
WaitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait WaitTime
'2. Erneut prüfen, falls besetzt 5 Sekunden warten
If DateiIstFrei(DBPfad) = True Then
Workbooks.Open DBPfad
Exit Sub
Else
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 5
WaitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait WaitTime
'3. Versuch und sonst abbrechen
If DateiIstFrei(DBPfad) = True Then
Workbooks.Open DBPfad
Exit Sub
Else
MsgBox "Fehler: Die Datenbank konnte nicht geöffnet werden, da bereits durch einen anderen User in Bearbeitung."
Application.Cursor = xlDefault
Besetzt = True
Application.ScreenUpdating = True
Exit Sub
End If
End If
End If
End Sub


Gruss
Chris
Anzeige
AW: Zugriff mehrer User
13.10.2003 08:14:55
Krzysztof
Halo ChrisL!

Besten Dank für den Vorschlag. Ich mache mich sofort daran, es auszuprobieren!

Hab aber so'n Gefühl, dass ich noch fragen haben werde... :-)

Krzysztof

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige